project
是 pom.xml 中描述符的根。modelVersion
指定 pom.xml 符合哪个版本的描述符。maven 2 和 3 只能为 4.0.0。groupId:artifactId:version
的形式。groupId
、artifactId
、version
组合成 groupId:artifactId:version
来唯一识别一个 jar 包。1.0-SNAPSHOT
。各个部分的含义和处理逻辑如下说明:groupId
、artifactId
、version
意义相同。packaging
的类型,如果不使用 type
标签,maven 默认为 jar。scope
标签,maven 默认为这个范围。编译依赖关系在所有 classpath 中都可用。此外,这些依赖关系被传播到依赖项目。propertie
来指定特定的路径,如$ {java.home} / lib。由于假定先前安装了系统范围依赖关系,maven 将不会检查项目的仓库,而是检查库文件是否存在。如果没有,maven 将会失败,并建议您手动下载安装。optional
让其他项目知道,当您使用此项目时,您不需要这种依赖性才能正常工作。groupId
和 artifactId
。与可选项不同,可能或可能不会安装和使用,排除主动从依赖关系树中删除自己。parent
指定父 POM ,然后继承其配置。relativePath
元素。在搜索本地和远程存储库之前,它不是必需的,但可以用作 maven 的指示符,以首先搜索给定该项目父级的路径。dependencyManagement
是表示依赖 jar 包的声明。即你在项目中的 dependencyManagement
下声明了依赖,maven 不会加载该依赖,dependencyManagement
声明可以被子 POM 继承。dependencyManagement
的一个使用案例是当有父子项目的时候,父项目中可以利用 dependencyManagement
声明子项目中需要用到的依赖 jar 包,之后,当某个或者某几个子项目需要加载该依赖的时候,就可以在子项目中 dependencies
节点只配置 groupId
和 artifactId
就可以完成依赖的引用。dependencyManagement
主要是为了统一管理依赖包的版本,确保所有子项目使用的版本一致,类似的还有plugins
和pluginManagement
。${propertie}
。${basedir}/target
。* .properties
文件,其中包含适用于接受其设置的资源的属性列表(如下所述)。换句话说,过滤器文件中定义的“name = value”对在代码中替换$ {name}字符串。* .properties
文件不必定义为进行过滤 - 资源还可以使用默认情况下在 POM 中定义的属性(例如$ {project.version}),并将其传递到命令行中“-D”标志(例如,“-Dname = value”)或由 properties 元素显式定义。过滤文件覆盖上面。${basedir}/src/main/resources
。includes
类似,指定目录中要排除的文件,使用*作为通配符。注意:如果 include
和 exclude
发生冲突,maven 会以 exclude
作为有效项。testResources
与 resources
功能类似,区别仅在于:testResources
指定的资源仅用于 test 阶段,并且其默认资源目录为:${basedir}/src/test/resources
。groupId
、artifactId
、version
意义相同。dependencies
是插件本身所需要的依赖。dependencyManagement
很相似,在当前 POM 中仅声明插件,而不是实际引入插件。子 POM 中只配置 groupId
和 artifactId
就可以完成插件的引用,且子 POM 有权重写 pluginManagement 定义。build
元素中,它为整个 POM 设置了各种目录结构。由于它们在配置文件构建中不存在,所以这些不能由配置文件更改。${basedir}
。site
生成阶段的元素。某些 maven 插件可以生成 reporting
元素下配置的报告,例如:生成 javadoc 报告。reporting
与 build
元素配置插件的能力相似。明显的区别在于:在执行块中插件目标的控制不是细粒度的,报表通过配置 reportSet
元素来精细控制。而微妙的区别在于 reporting
元素下的 configuration
元素可以用作 build
下的 configuration
,尽管相反的情况并非如此( build
下的 configuration
不影响 reporting
元素下的 configuration
)。plugin
下的 outputDirectory
元素。在报告的情况下,默认输出目录为 ${basedir}/target/site
。<contributor>
的子标签和 <developer>
的完全相同。repositories
是遵循 Maven 存储库目录布局的 artifacts 集合。默认的 Maven 中央存储库位于https://repo.maven.apache.org/maven2/上。repositories
差不多。repositories
相似activation
是一个 profile
的关键。配置文件的功能来自于在某些情况下仅修改基本 POM 的功能。这些情况通过 activation
元素指定。