项目对象模型 (POM) 是 Maven 中的基本工作单元。它是一个 XML 文件,包含有关项目的信息以及 Maven 用于构建项目的配置详细信息。它包含大多数项目的默认值。例如,构建目录为target;源目录为src/main/java;测试源目录为src/test/java;等等。执行任务或目标时,Maven 在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。
POM.xml最简示例
1 | <project> |
POM.xml结构
项目基本信息
必填项标签:
- groupId:项目的组名,通常为反转的域名,例如:com.example
- artifactId: 项目的唯一标识,通常为项目名称
- version:项目版本号
- packaging:项目打包方式,通常是 jar、war 或 pom, 如果没有指定packaging,则默认是 jar
其他重要标签:
- modules
modules 标签用于声明当前 Maven 项目包含的模块子项目,每个子项目都是一个独立的 Maven 项目,具有自己的 pom.xml 文件,可以进行独立构建和测试。在父项目的 pom.xml 文件中,使用 标签来列出所有子项目的名称。
1 | <project> |
- parent
parent 标签用于声明当前 Maven 项目的父项目,它可以将若干个 Maven 项目组织成一个整体,指定版本号,插件版本号等,便于管理和维护,在一个 Maven 项目中,使用标签来引用父项目。
1 | <?xml version="1.0" encoding="UTF-8"?> |
- properties
properties 严格来说,并不一定是项目本身的信息,而是人为设置的属性或者说宏,这个标签用来定义和管理项目中所需要的属性,其作用有以下几个:
(1) 统一管理项目中的常用属性,比如版本号、路径、插件版本等,方便统一修改和管理。
(2) 可以在配置过程中使用 ${…}占位符引用这些属性,使得配置更加灵活和便捷。
(3) 避免硬编码,提高代码的可维护性和可读性
1 | <project> |
项目的依赖列表
dependency
与项目的依赖列表相关的标签最外层由 dependencies 来囊括,内部包含了各种具体的依赖 dependency,该标签用于指定一个依赖项,它包含以下几个子标签:
- groupId:指定依赖项的groupId,项目的组名
- artifactId:指定依赖项的artifactId,项目的唯一标识符
- version:指定依赖项的版本号。
- scope:指定依赖项在项目中的使用范围。
其中的
repository
我们还能在pom文件中支持指定Maven仓库,即使用 repositories 和 repository 标签,repository 用于指定一个Maven仓库。
项目的构建配置
项目的构建配置信息,包括编译器版本、插件列表、源代码目录等。
具体请参考:
参考链接
- 全面详解Maven的配置文件pom.xml(含常用plugin),by Slow菜鸟.
- Introduction to the POM,by apache.
- Maven的三种项目打包方式——pom,jar,war的区别,by Mr.史.
- 基于Springboot的maven父子工程pom文件打包配置,by Sherlock先生.