本文来说下maven项目pom.xml中parent标签的使用

文章目录

  • parent标签
  • 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标签的使用相关推荐

  1. maven项目pom.xml中添加axis2 的配置

    更改pom.xml,增加相关依赖 <properties><axis2.version>1.7.8</axis2.version></properties&g ...

  2. pom文件找不到子项目_java,eclipse_eclipse中maven项目pom.xml文件找不到parent要怎么解决?,java,eclipse,maven - phpStudy...

    eclipse中maven项目pom.xml文件找不到parent要怎么解决? 在maven项目中方pom.xml文件找不到parent,maven clean报错如下: [ERROR] [ERROR ...

  3. springboot创建parent_创建springboot项目时,pom.xml中parent报错

    下载Maven 进入maven官网 http://maven.apache.org/download.cgi. 找到并点击apache-maven-3.6.2-bin.zipi.下载压缩包 配置Mav ...

  4. maven的pom.xml中repositories的作用

    在maven中pom.xml是Maven进行工作的主要配置文件,它的作用包括:配置Maven项目中需要使用的远程仓库,Maven项目的资源依赖关系等.其中pom是Project Object Mode ...

  5. maven项目pom.xml文件Maven install时报错

    欢迎加入JavaWeb开发交流群:群号:1062758224 [WARNING] The artifact org.apache.commons:commons-io:jar:1.3.2 has be ...

  6. maven的pom.xml中profiles的作用

    1.profiles是什么?有什么作用 在maven构建的项目都存在一个pom.xml的项目对象模型配置文件,用于约束项目(如:jar包管理.构建管理等).profiles是pom.xml中的一个配置 ...

  7. eclipse手动pom本地包_(转)如何在maven的pom.xml中添加本地jar包

    1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下所示: 1 groupId 2 artifactId 3 version 4 jar包的依赖 如果要将 ...

  8. (转)如何在maven的pom.xml中添加本地jar包

    转载自: https://www.cnblogs.com/lixuwu/p/5855031.html 1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下 ...

  9. maven 在pom.xml 中指定仓库位置

    ...... 在pom.xml 中添加 仓库位置(这样遇到私服没有的依赖,就会去这下载) </properties><repositories><!-- 代码库 --&g ...

最新文章

  1. 东 北 大 学计算机辅助设计,东北大学计算机辅助设计(B)
  2. css --- 使用scss生成常用的基本css样式
  3. c语言图片效果,c语言能显示图片吗
  4. CCNA,CCNP资料
  5. 用Flash模拟小车
  6. Recover刷机简介
  7. 广西科技大学计算机考研,广西科技大学研究生院
  8. 直接拿来用!一文学会 Docker 镜像!
  9. k8s部署nacos
  10. Reflector 3在录制中如何添加自己的声音
  11. webservice4
  12. 【应用随机过程】01. 随机过程的基本概念
  13. 【机房报修管理系统】1.简介篇 机房报修管理系统简介
  14. 唯物史观在高中历史教学中的具体运用
  15. word怎样把多个标题设置成一级标题,二级标题的简便方法
  16. 如何在不同的窗口中打开多个Excel
  17. 顺序表--学生信息管理
  18. AWS - 查看操作历史 - CloudTrail
  19. BigDecimal 往左移动两位小数_小学五年级上册数学小数除法应用题专项练习,拿给孩子做做看...
  20. 在shell脚本中使用sed命令更改文件中两个相似参数的其中一个

热门文章

  1. Django编写RESTful API(二):请求和响应
  2. php 自定义 $_SERVER
  3. WEB站点服务器安全配置
  4. Objective C的那点小语法
  5. 解决/usr/bin/ld: cannot find -lxxx
  6. corosync+openais+pacemaker构建高可用性集群
  7. 热备份路由协议(HSRP)
  8. 新瓶旧酒ASP.NET AJAX(1) - 简单地过一下每个控件(ScriptManager、ScriptManagerProxy
  9. 生活等级测试(娱乐性质)
  10. Windows结束某个端口的进程