POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖等等。

执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。

POM 中可以指定以下配置:

  • 项目构建 profile
  • 项目依赖
  • 插件
  • 执行目标
  • 项目版本
  • 项目开发者列表
  • 相关邮件列表信息

创建POM 文件pom.xml

在项目根目录下创建pom.xml文件。
pom.xml:

<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>

<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
<groupId>com.companyname.project-group</groupId>

<!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>project-name</artifactId>

<!-- 版本号 -->
<version>1.0</version>
</project>

所有 POM 文件都需要 project 元素和三个必需字段:groupId,artifactId,version

  • project是工程的根标签
  • modelVersion要设置为4.0.0
  • groupId是工程组的标识
  • artifactId是工程的标识,通常是工程的名称。groupId和artifactId一起定义了artifact在仓库中的位置
  • version是工程的版本号,在 artifact 的仓库中,它用来区分不同的版本,如:com.companyname.project-group:project-name:1.0

父(Super)POM

父(Super)POM是 Maven 默认的 POM。所有的 POM 都会继承自一个父 POM(无论是否显式定义了这个父 POM)。父 POM 包含了一些可以被继承的默认设置。因此,当 Maven 发现需要下载 POM 中的依赖时,它会到 Super POM 中配置的默认仓库去下载。

Maven 使用 effective pom来执行相关的目标,它帮助开发者在 pom.xml 中做尽可能少的配置(Super pom 加上工程自己的配置),当然这些配置可以被重写。

使用以下命令来查看 Super POM 默认配置:

mvn help:effective-pom

POM 标签可参考​​《POM 标签大全》​