Maven的pom.xml文件简称POM (Project Object Model),是Maven项目的配置和管理核心。
pom.xml文件包含大量配置信息,这些信息大致可以分为4类。
1.POM的模型版本
<modelVersion>4.0.0</modelVersion>
说明:在Maven2和Maven3中,只支持4.0.0版本。
2.基本配置
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<packaging>...</packaging>
<dependencies>...</dependencies>
<parent>...</parent>
<dependencyManagement>...</dependencyManagement>
<modules>...</modules>
<properties>...</properties>
说明:
- groupId,构件所属的组织ID
- artifactId,构件的ID
- version,构件的当前版本
3.Build配置
<build>...</build>
<reporting>...</reporting>
具体配置参数将在后续文章中详述。
4.环境配置
<issueManagement>...</issueManagement>
<ciManagement>...</ciManagement>
<mailingLists>...</mailingLists>
<distributionManagement>...</distributionManagement>
<scm>...</scm>
<prerequisites>...</prerequisites>
<repositories>...</repositories>
<pluginRepositories>...</pluginRepositories>
<profiles>...</profiles>
说明:
- issueManagement,给出defect tracking system及其访问URL
- system
- url
- ciManagement,给出Continuous Integration Management、其URL和notifier
- system
- url
- notifiers,集成过程中发生事件,以某种方式(如mail)通知开发人员
- scm,software configuration management
- connection,用户使用的URI,能够只读地访问版本控制系统
- developerConnection,开发人员使用URI,能够读写地访问版本控制系统
- tag,项目当前的tag
- url,可通过Web浏览器访问的公共网址
- distributionManagement,构件的发布管理,详情见后续文章
- prerequisites,POM执行的前提条件,目前只支持对Maven版本的要求
- maven
- mailingLists,开发人员或用户的邮件列表
- mailingList
- name
- subscribe,订阅地址
- unsubscribe,取消订阅地址
- post,POST邮件的目的地址
- archive,打包的邮件列表历史记录
- otherArchives,镜像打包的邮件列表历史记录
- mailingList
5.其他信息
<name>...</name>
<description>...</description>
<url>...</url>
<inceptionYear>...</inceptionYear>
<licenses>...</licenses>
<organization>...</organization>
<developers>...</developers>
<contributors>...</contributors>
说明:
- name,项目的名称代号
- description,项目的说明
- url,项目的官网URL
- inceptionYear,项目的开发年份
- licenses,项目使用的License。其中可以包含多个license,license具体又包含如下子属性
- name,license的名称
- url,license可访问的URL地址
- distribution,license发布的方式。repo表示可以直接从Maven库下载,manual表示必须手工安装
- comments,对license的说明
- organization,包含组织的name,组织的官网url
- developers,其中的developer包含id, name, email, url, organization, organizationUrl, roles, timezone, properties属性
- properties是可以自定义的各种必要属性
- properties是可以自定义的各种必要属性
- contributors,其中的contributor包含与developer基本相同的属性,除了没有id属性之外