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
用于管理 children 的 dependencies 的,例如如果 parent 使用 dependencyManagement 定义了 dependency 是 junit4.0,那么它的 children 就可以只引用 groupId 和 artifactId,而 version 就可以通过 parent 来设置,这样的好处就是可以集中管理依赖的详情。
modules
设置包含的子模块。
properties
为 pom 上下文定义一些常量,在 pom 中的其它地方可以直接引用,引用方式**$(参数名)**。