maven项目pom.xml中parent标签的使用小结
parent标签
parent标签使用例子
<!--父项目的坐标。如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。
坐标包括groupID,artifactID和version等。-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<!--父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。
默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项目的pom,
其次在文件系统的这个位置(relativePath位置),然后在本地仓库,
最后在远程仓库寻找父项目的pom。-->
<relativePath/> <!-- lookup parent from repository -->
</parent>parent标签由来
使用maven是为了更好的帮项目管理包依赖,maven的核心就是pom.xml。当我们需要引入一个jar包时,在pom文件中加上就可以从仓库中依赖到相应的jar包。
现在有这样一个场景,有两个web项目A、B,一个java项目C,它们都需要用到同一个jar包:common.jar。如果分别在三个项目的pom文件中定义各自对common.jar的依赖,那么当common.jar的版本发生变化时,三个项目的pom文件都要改,项目越多要改的地方就越多,很麻烦。这时候就需要用到parent标签, 我们创建一个parent项目,打包类型为pom(parent项目只能是pom,不包含任何代码),parent项目中不存放任何代码,只是管理多个项目之间公共的依赖。在parent项目的pom文件中定义对common.jar的依赖,ABC三个子项目中只需要定义,parent标签中写上parent项目的pom坐标就可以引用到common.jar了。
上面的问题解决了,我们在切换一个场景,有一个springmvc.jar,只有AB两个web项目需要,C项目是java项目不需要,那么又要怎么去依赖。如果AB中分别定义对springmvc.jar的依赖,当springmvc.jar版本变化时修改起来又会很麻烦。解决办法是在parent项目的pom文件中使用<dependencyManagement></dependencyManagement>将springmvc.jar管理起来,如果有哪个子项目要用,那么子项目在自己的pom文件中使用
<dependency>
<groupId></groupId>
<artifactId></artifactId>
</dependency>
标签中写上springmvc.jar的坐标,不需要写版本号,可以依赖到这个jar包了。这样springmvc.jar的版本发生变化时只需要修改parent中的版本就可以了。
dependencyManagement是管理jar包版本的,如果在父项目中的该节点下声明了包的版本,子项目中在Dependencies中引用该包时就不需要声明版本了,这样保证多个子项目能够使用相同的包版本。dependencyManagement不实际下载jar包,只会声明包的版本。如果Dependencies中声明了包的版本,则会覆盖dependencyManagement声明的版本。
依赖排除
后续子项目如果不想使用父项目定义的版本,需要通过exclusion排除。由于maven 2.x的依赖传递规则, 很有可能你的项目类路径中包含了一些不想要的依赖. 比如说, 你的项目依赖的那些工程可能没有正确地声明他们的依赖集合. 为了应对这个特殊的场景, maven2.x提出了依赖排除的概念. 排除是针对POM中的一个特定的依赖设置的, 以一个特定的groupId和artifactId为标识. 如果你声明了排除依赖, 当你构建你的工程时, 该构件就不会被添加到你的工程的类路径中.
如何在子项目中排除父项目中不需要的依赖

本文小结
到此这篇关于maven项目pom.xml中parent标签的使用小结的文章就介绍到这了,更多相关maven pom.xml中parent标签内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Spring Boot 3.0 + MyBatis-Plus全家桶实战详细代码
MyBatis-Plus是一个MyBatis的增强工具,是国内人员开发的MyBatis增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生,这篇文章主要介绍了Spring Boot 3.0 + MyBatis-Plus全家桶的相关资料,需要的朋友可以参考下2025-10-10
java.lang.IncompatibleClassChangeError异常的问题解决
本文主要介绍了java.lang.IncompatibleClassChangeError异常的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2024-06-06
Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法
这篇文章主要介绍了Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法,结合实例形式详细分析了post数据发送及获取请求数据的原理与相关操作注意事项,需要的朋友可以参考下2017-11-11
SpringBoot整合Liquibase实现对数据库管理和迁移
Liquibase是一个用于用于跟踪、管理和应用数据库变化的开源工具,通过日志文件(changelog)的形式记录数据库的变更(changeset),然后执行日志文件中的修改,将数据库更新或回滚(rollback)到一致的状态,本文主要介绍SpringBoot与Liquibase的集成,需要的朋友可以参考下2024-11-11
synchronized及JUC显式locks 使用原理解析
这篇文章主要为大家介绍了synchronized及JUC显式locks 使用原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-12-12
Java Hutool 包工具类推荐 ExcelUtil详解
这篇文章主要介绍了Java Hutool 包工具类推荐 ExcelUtil详解,需要引入hutool包,版本号可根据实际情况更换,除hutool包之外,还需要引入操作Excel必要包,本文给大家介绍的非常详细,需要的朋友可以参考下2022-09-09


最新评论