pom 参数详解

image.png

modelVersion:声明项目描述符遵循哪一个 POM 模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,这是为了当 Maven 引入了新的特性或者其他模型变更的时候,确保稳定性。

parent:引入父级 pom 文件。

groupId:公司名称、组织名称、项目开发者,配置时生成路径也是由此生成(包名,如 com.XXX)。

artifactId:项目通用名称。

version:对应项目版本号。

packaging:打包后的类型。如 war、jar、maven-plugin、ejb、pom、ear、par、rar

name: 用户描述项目的名称,可选。

url: 项目主页的 URL, Maven 产生文档时用。

exclusions:排除管理(写在 dependency 中)。

exclusion:具体要排除的依赖项。

repositories: 仓库管理。

repository:具体仓库(有 id、name、url 子元素)。

properties:自定义标签管理(可在其内自定义标签名、值,用法同于 el 表达式:${标签名} 得到其值),常用于集中定义依赖版本号。

scope:管理部署(可以使用 5 个值:

    * compile,缺省值,适用于所有阶段,会随着项目一起发布。 

    * provided,类似 compile,期望 JDK、容器或使用者会提供这个依赖。如 servlet.jar。 

    * runtime,只在运行时使用,如 JDBC 驱动,适用运行和测试阶段。 

    * test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。 

    * system,类似 provided,需要显式提供包含依赖的 jar,Maven 不会在 Repository 中查找它。

  )。

image.png

dependencyManagement:依赖,jar 包管理。

dependencies: 依赖,jar 包管理。

dependency:具体的依赖项。

dependencyManagementdependencies区别:

 1)dependencies: 自动引入声明在 dependencies 里的所有依赖,并默认被所有的子项目继承。如果项目中不写依赖项,则会从父项目

继承(属性全部继承)声明在父项目 dependencies 里的依赖项。

 2)dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要的依赖。如果不在子项目中声明依赖,

是不会从父项目中继承的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且 version 和 scope 都读取

自父 pom; 如果子项目中指定了版本号,那么会使用子项目中指定的 jar 版本。同时 dependencyManagement 让子项目引用依赖,而不用显示的列出版本号。Maven 会沿着父子层次向上走,直到找到一个拥有 dependencyManagement 元素的项目,然后它就会使用在这个

dependencyManagement 元素中指定的版本号, 实现所有子项目使用的依赖项为同一版本。

3) dependencyManagement
中的 dependencies 并不影响项目的依赖项;而独立 dependencies 元素则影响项目的依赖项。只有当外

层的 dependencies 元素中没有指明版本信息时,dependencyManagement 中的 dependencies 元素才起作用。一个是项目依赖,一个是 maven 项目多模块情况时作依赖管理控制的。

 4)pluginManagementplugins区别相似,只不过它们用于管理 plugin。

image.png

build:全局配置(project build),针对当前项目的所有情况都有效。自定义配置(profile build)针对不同的 profile 配置。

filter: 可利用指定的 xxx.properties 中对应的 key=value 对资源文件中的 ${key} 进行替换,最终把你的资源文件中的 username=$$${key} 替换成 username=value
defaultGoal:执行 build 任务时,如果没有指定目标,将使用的默认值。

finalName:build目标文件的名称,默认情况为 ${artifactId}-$$${version}。

include:指定哪些文件将被匹配,以 * 作为通配符。

excludes:指定哪些文件将被忽略。

resources:用于包含或者排除某些资源文件。

testResources:定义和 resource 类似,只不过在 test 时使用

directory:build 目标文件的存放目录,就是定义 resource 文件所在的文件夹,默认在 ${basedir}/target 目录。

plugins:指定使用的插件。

configuration:配置该 plugin 期望得到的 properties。

另外:

modules:一个项目有多个平级模块,也叫做多重模块,或者合成项目,modules 实现平级模块管理。

module:具体模块名称(标明该模块和 artifactId 标签中模块平级),是 project 标签的子元素。

profiles:自定义配置信息管理

profile:具体自定义配置(可以在不同环境下使用不同的配制文件)

activation:profile 的子元素,指该配置的激活条件。Activation 是 profile 的开启钥匙,但不是激活 profile 的唯一方式。

jdk:当匹配的 jdk 被检测到,profile 被激活。

os:用法同于 jdk,当匹配的操作系统属性被检测到,profile 被激活。