Maven的pom.xml文件简称POM (Project Object Model),是Maven项目的配置和管理核心。
pom.xml文件包含大量配置信息,这些信息大致可以分为5类。
1、POM的模型版本
<modelVersion>4.0.0</modelVersion> //说明:在Maven2和Maven3中,只支持4.0.0版本。
2、基本配置
<groupId>…</groupId>//不可变更点 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成
<artifactId>…</artifactId> //本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的
<version>…</version> //项目版本
<packaging>…</packaging>//packaging给出了项目的打包类型,即作为项目的发布形式,其可能的类型。
<dependencies>…</dependencies>//Maven项目的构建往往要依赖于第三方的类库。通过<dependencies>可以给出Maven项目所依赖的第三方类库
<parent>…</parent> //依赖的父工程
<dependencyManagement>…</dependencyManagement> //Maven 3支持Maven项目的多模块(multi-modules)结构。这样的Maven项目也被称为聚合项目,通常由一个父模块和若干个子模块构成。
其中,父模块必须以pom打包类型,同时以<modules>给出所有的子模块。父模块的POM示例(其中的每个module,都是另外一个Maven项目)
<modules>…</modules>
<properties>…</properties> //为pom定义一些常量,在pom中的其它地方可以直接引用
3、Build配置
<build>…</build> //使用的插件列表
<reporting>…</reporting> //Maven的site阶段,用于生成报表
4、环境配置
<issueManagement>…</issueManagement> //项目的问题管理系统(Bugzilla, Jira, Scarab,或任何你喜欢的问题管理系统)的名称和URL
<mailingLists>…</mailingLists> //本项目相关 mail list, 用于订阅等信息
<distributionManagement>…</distributionManagement> //用于配置分发管理,配置相应的产品发布信息,主要用于发布,在执行mvn deploy后表示要发布的位置
<scm>…</scm> //scm(software configuration management)标签允许你配置你的代码库,为Maven web站点和其它插件使用
<repositories>…</repositories> //maven proxy, 本地仓库,替代 maven.apache.org 网站 jar 列表,用户下载时,首先寻找该站点
<profiles>…</profiles> //根据不同的构件环境,对构建(build)过程进行动态配置的手段
5、其他信息
<name>…</name> //项目的名称代号
<description>…</description> //项目的说明
<url>…</url> //项目的官网URL
<inceptionYear>…</inceptionYear> //项目的开发年份
<licenses>…</licenses> //项目使用的License。其中可以包含多个license
<organization>…</organization> //包含组织的name,组织的官网url
<developers>…</developers> //开发者信息 其中的developer包含id, name, email, url, organization, organizationUrl, roles, timezone, properties属性(properties是可以自定义的各种必要属性)