pom参数详解

pom 中有很多成对的参数,是不是大家跟我一样,很多都在用,但不知道参数的定义,下面来整理下这些参数,也方便日后想不起来的时候,可以很快的进行查阅,大家在看的时候尽量对比着自己的项目看,这样可以加深理解。

groupId

项目或者组织的唯一标识,相当于是公司标识,并且配置时,默认 package 路径也是由此生成。

artifactId

项目的通用名称。

version

项目的版本。

packaging

打包机制,项目的打包类型,常用的类型有 jar(默认)、pom、war 等(不常用的就不罗列了)。

name

用户描述项目的名称(可选)。

url

开发团队的网站(可选)。

dependency (外部包的引用)

type

默认为 jar 类型,常用的类型有:jar、ejb-client、test-jar……,可设置 plugins 中的 extensions 值为 true 后再增加新的类型。

scope

指定当前包的依赖范围。

共有 6 种 scope 参数可选:

编译(compile)

这是默认范围,如果未指定则使用。编译依赖项在项目的所有类路径中均可用。此外,这些依赖项会传播到相关项目。

提供(provided)

这很像编译,但是表明您希望 JDK 或容器在运行时提供依赖项。例如,在为 Java Enterprise Edition 构建 Web 应用程序时,您将对 Servlet API 和相关 Java EE API 的依赖关系设置为提供的范围,因为 Web 容器提供了这些类。该作用域仅在编译和测试类路径上可用,并且不可传递。

运行(runtime)

此作用域表明依赖关系不是编译所必需的,而是执行所必需的。它在运行时和测试类路径中,但不在编译类路径中。

测试(test)

此范围表明该依赖关系对于正常使用该应用程序不是必需的,并且仅在测试编译和执行阶段可用。

系统(system)

该范围类似于提供的范围,除了必须提供显式包含它的 JAR 之外。该工件始终可用,并且不会在存储库中查找。

导入(import)(仅在 Maven 2.0.9 或更高版本中可用)

此作用域仅在 <dependencyManagement> 部分中的 pom 类型的依赖项上使用。它指示应使用该 POM 的 <dependencyManagement> 部分中的依赖项替换指定的 POM。由于已替换它们,因此具有导入范围的依赖项实际上并不参与限制依赖项的可传递性。

optional

设置依赖是否可选,默认为 false,即子项目默认都继承;为 true,则子项目必须显示的引入,与 <dependencyManagement> 里定义的依赖类似。

exclusions

假如 A 依赖 B,B 依赖 C,那么 A 可以声明不要依赖 C,只要在 exclusions 中声明 exclusion(常用的地方是日志框架的选择)。

relativePath

可选,maven 会首先搜索这个地址,再搜索本地远程 repositories。

dependencyManagement

用于管理 childrendependencies 的,例如如果 parent 使用 dependencyManagement 定义了 dependency 是 junit4.0,那么它的 children 就可以只引用 groupIdartifactId,而 version 就可以通过 parent 来设置,这样的好处就是可以集中管理依赖的详情。

modules

设置包含的子模块。

properties

为 pom 上下文定义一些常量,在 pom 中的其它地方可以直接引用,引用方式**$(参数名)**。

Reference