Maven中的DependencyManagement和Dependencies

这里介绍一个在父项目中的根结点中声明dependencyManagement和dependencies的区别

dependencyManagement

Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素。使用pom.xml 中的dependencyManagement 元素能让

所有在子项目中引用一个依赖而不用显式的列出版本号。Maven 会沿着父子层次向上走,直到找到一个拥有dependencyManagement 元素的项目,然后它就会使用在这个dependencyManagement 元素中指定的版本号。

例如在父项目里:

Xml代码  

  1. <dependencyManagement>
  2. <dependencies>
  3. <dependency>
  4. <groupId>mysql</groupId>
  5. <artifactId>mysql-connector-java</artifactId>
  6. <version>5.1.2</version>
  7. </dependency>
  8. ...
  9. <dependencies>
  10. </dependencyManagement>

然后在子项目里就可以添加MySQL-connector时可以不指定版本号,例如:

Xml代码  

  1. <dependencies>
  2. <dependency>
  3. <groupId>mysql</groupId>
  4. <artifactId>mysql-connector-java</artifactId>
  5. </dependency>
  6. </dependencies>

这样做的好处就是:如果有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一个版本号,这样当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要一个一个子项目的修改 ;另外如果某个子项目需要另外的一个版本,只需要声明version就可。

dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显式的声明需要用的依赖。

dependencies

相对于dependencyManagement,所有声明在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。

时间: 2024-10-14 15:29:08

Maven中的DependencyManagement和Dependencies的相关文章

在父项目中的根结点中声明dependencyManagement和dependencies的区别

dependencyManagement Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式.通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素.使用pom.xml 中的dependencyManagement 元素能让所有在子项目中引用一个依赖而不用显式的列出版本号.Maven 会沿着父子层次向上走,直到找到一个拥有dependencyManagement 元素的项目,然后它就会使用在这个dependen

Maven中的dependencyManagement 意义

1.在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器. 2.pom.xml文件中,jar的版本判断的两种途径 1:如果dependencies里的dependency自己没有声明version元素,那么maven就 会倒dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,如果有,就继承它,如果 没有就会报错,告诉你必须为dependency声明一个version 2:如果dep

Maven中&lt;dependencies&gt;节点和&lt;dependencyManagement&gt;节点的区别

1.dependencyManagement 应用场景 Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式,通常会在一个组织或者项目的最顶层的POM中看到dependencyManagement 元素,在pom.xml 中使用dependencyManagement 元素能让所有子项目中引用一个依赖而不用显式的列出版本号.Maven 会沿着父子层次向上走,直到找到一个拥有dependencyManagement 元素的项目,然后它就会使用在这个depe

maven中的 dependencies 和 dependencyManagement 的区别

今天我在配置 sellercenter 的接口测试环境的时候,发现一些依赖的写法不太一致: 比如有的依赖的<scope>是写在子项目中的 <dependencies> 下的<dependency> 标签中, 而有的依赖的<scope>是写在父项目中的<dependencyManagement> 中 . 我知道前一种写法是对的,而后一种写法却不知道对不对了,从网上查了下,没有找到非常确切的答案,于是自己验证了一把. 把验证过程给大家说下,大家也可以

maven中pom.xml中配置整理: groupId、artifactId、parent、dependency、dependencyManagement区别

1 <groupId>com.mycompany.commonmaven</groupId> 2 <artifactId>commonmaven</artifactId> 3 <version>0.0.1-SNAPSHOT</version> 4 <packaging>jar</packaging> 5 <name>common_maven</name> groupId 定义了项目属于哪

maven中maven dependencies中依赖出现了项目

maven 中maven dependencies中依赖出现了项目,把依赖的项目关掉,项目消失,但是还是无法打包 ,出现的错误如图.说明:依赖的项目为project-dao  打包的项目为project-service  都在project-parent中有依赖. project-dao是可以打包成功的.project-service中依赖dao的jar包也可以过 来. [INFO] Scanning for projects... [INFO]                        

maven中pom.xml标签介绍

pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素. 1 <span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.org/POM/4.0.0" 2 xmlns:xsi="htt

Maven中的继承和聚合

一. 继承和聚合 1. 什么是继承? maven为了消除重复,把很多相同的配置提取出来, 放入一个父项目的pom.xml中 例如:grouptId,version等 2. 什么是聚合? 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 <modules> <module>-</module> </modules> 3. 继承与聚合的关系 继承主要为了消除重复 聚合主要为了快速构建项目 二. 继承聚合配置 1. 聚合配置代码: <mod

Maven中的核心概念

我们最能感受到的Maven的好处应该是它的"自动化构建"与"管理依赖关系"两大功能,下面就看围绕这两大功能的Maven中的核心概念. 1.    项目目录 Maven 使用约定优于配置的原则 .它要求在没有定制之前,所有的项目都有如下的主要目录结构: 一个 maven 项目在默认情况下会产生 JAR 文件,另外 ,编译后 的 .classe文件 会放在 ${basedir}/target/classes 下面:JAR文件会放在${basedir}/target 下面