前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >maven 中 pom.xml 配置文件标签说明,dependencyManagement和dependencies区别

maven 中 pom.xml 配置文件标签说明,dependencyManagement和dependencies区别

作者头像
微风-- 轻许--
发布2022-04-13 08:48:16
9310
发布2022-04-13 08:48:16
举报
文章被收录于专栏:java 微风

参考:http://zhaoshijie.iteye.com/blog/2094478 http://blog.csdn.net/cpf2016/article/details/45674377

还有一篇转载文章也说得很详细,见:http://blog.csdn.net/jiangyu1013/article/details/52424672

一、 节点说明

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

parent:引入父级pom文件。

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

artifactId:项目通用名称。

version:对应项目版本号。

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

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

url:项目主页的URL, Maven产生文档时用。
代码语言:javascript
复制
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中查找它。
)。
代码语言:javascript
复制
dependencies:依赖,jar包管理。

dependency:具体的依赖项。

dependencyManagement:依赖,jar包管理。

二 、 dependencyManagement 和 dependencies 的区别 1 ) dependencies:自动引入声明在dependencies里的所有依赖,并默认被所有的子项目继承。

如果项目中不写依赖项,则会从父项目继承(属性全部继承)声明在父项目dependencies里的依赖项。 2 ) dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要的依赖。

如果不在子项目中声明依赖,是不会从父项目中继承的;

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

如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

同时dependencyManagement让子项目引用依赖,而不用显示的列出版本号。

Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号,实现所有子项目使用的依赖项为同一版本。 3)dependencyManagement 中的 dependencies 并不影响项目的依赖项;

而独立dependencies元素则影响项目的依赖项。

只有当外层的dependencies元素中没有指明版本信息时,dependencyManagement 中的 dependencies 元素才起作用。一个是项目依赖,一个是maven项目多模块情况时作依赖管理控制的。 4 ) pluginManagement和plugins 区别相似,只不过它们用于管理plugin。

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

defaultGoal:执行build任务时,如果没有指定目标,将使用的默认值。

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

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

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

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

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

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

plugins:指定使用的插件。

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

另外:

代码语言:javascript
复制
modules:一个项目有多个平级模块,也叫做多重模块,或者合成项目,modules实现平级模块管理。

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

profiles:自定义配置信息管理。

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

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

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

os:用法同于jdk,当匹配的操作系统属性被检测到,profile 被激活。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/09/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档