一、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之间会按顺序进行。