一、POM(Project Object Model)项目对象模型
Pom在Maven中是一个XML文件,位于项目的根目录下,其包含着项目构建所需要的必要信息,Pom还支持继承,当一个项目中拥有多个模块时,子模块可以继承父模块的Pom。
而我们在之前创建的arazon中Pom文件如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>info.zhw.arazon</groupId><artifactId>arazon</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>Arazon</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.8.2</version><scope>test</scope></dependency></dependencies> </project>
1、project:
代表着Pom文件的根元素,代表该项目本身
2、modelVersion:
所使用的Object Model版本,也就是POM模型的版本,这个属性是强制性且不需要修改的(目前)。
3、groupId:
定义项目属于哪一个组,并分配其唯一的组Id,如项目名为arazon,由组织info.zhw创建,则其groupId为info.zhw.arazon。
4、artifactId:
定义当前Maven项目在gourp中唯一的ID,如之前Pom文件中的arazon,即定义为该info.zhw组织中一个名为arazon的项目,即artifactId。
5、version:
artifact的版本,通过groupId,artifactId和version就能唯一确认一个项目。
6、name:
项目名称,不是必须的。一般与artifactId相近,用于maven生成的文档中。如在上面的例子中,可以直接将name设置为Arazon。
7、url:
项目的地址
8、description:
项目的描述
9、dependencies:
表示项目的依赖。
10、packaging
artifact打包的方式,默认为jar
如果有想要添加的依赖,步骤如下:
1、进入maven仓库地址(http://mvnrepository.com/),搜索所需依赖。
2、如搜索spring,找到所需要的版本后,其会提供所需要的dependency的xml信息,如下:
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.1.5.RELEASE</version> </dependency>
3、将其复制入项目Pom文件的dependencies节点中。
4、则所需要的依赖就能够加入到项目中了
二、Artifact
每一个Artifact由gourpId:artifactId:version组成并唯一识别。意为构件,其实既是软件生产过程中产生的文件。它可以是jar文件,源文件,二进制文件,war文件,甚至是pom文件。每个artifact都由groupId和artifactId组合的标识符唯一识别。需要被使用(依赖)的artifact都要放在仓库(见Repository)中,否则Maven无法找到(识别)它们。
三、Repositories
仓库,存储Artifact所用,可以是自己的Artifact也可以是别人的Artifact。在Pom中生命dependency后构建项目时会从中央仓库中寻找所需要的Artifact。
仓库分为远程仓库和本地仓库两种,本地仓库,顾名思义就是在自己本地的仓库,一般由自己构建项目所用过的Artifact和maven的plugin组成。而远程服务器则是网络上的仓库,常用的有maven的中央仓库。
四、Build Lifecycle:
构建过程的生命周期有三种,分别是default(部署),clean(清理),site(文档生成),他们都有不同的生命周期。
而Lifecycle由phases构成,其中default的生命周期大部分如下:
- validate 验证项目是否正确以及必须的信息是否可用
- compile 编译源代码
- test 测试编译后的代码,即执行单元测试代码
- package 打包编译后的代码,在target目录下生成package文件
- integration-test 处理package以便需要时可以部署到集成测试环境
- verify 检验package是否有效并且达到质量标准
- install 安装package到本地仓库,方便本地其它项目使用
- deploy 部署,拷贝最终的package到远程仓库和替他开发这或项目共享,在集成或发布环境完成
- phases之间会按顺序进行。