Maven中<dependencies>节点和<dependencyManagement>节点的区别

1.dependencyManagement 应用场景

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

在 pom 中指明 dependency management 元素的方式 maven 结合项目继承来管理依赖,这样做的好处就是:如果有多个子项目都引用依赖项的同一版本,确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的成果,因此,应在顶层的 pom 中定义共同的依赖关系。同时可以避免在每个使用的子项目里都声明一个版本号,这样当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要一个一个子项目的修改;另外如果某个子项目需要另外的一个版本,只需要在dependencies中声明version即可。


2.dependencyManagement和dependencies的区别

dependencies,即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项。dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显式的声明需要用的依赖。如果在子项目中不写该依赖项,那么子项目中是不会从父项目继承该依赖项的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version 和 scope 都读取自父pom。

3. pom.xml中变量的使用(便于维护)


一 问题阐述

在pom.xml中添加依赖时语法如下

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>1.2.6</version>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-aop</artifactId>
  <version>1.2.6</version>
</dependency>

以上内容没错,但有这样一个问题,在spring的依赖中,我们需要引用一系列版本的spring,如版本1.2.6,每次都写不利于维护。

二 解决办法

在pom.xml定义properties标签


<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <spring.version>1.2.6</spring.version>
  <developer.organization>xxx</developer.organization>
 </properties>

以上内容就改成了

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
 <version>${spring.version}</version>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-aop</artifactId>
  <version>${spring.version}</version>
</dependency>
维护的时候只需要修改properties标签,非常清晰明了。

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

Maven中<dependencies>节点和<dependencyManagement>节点的区别的相关文章

Maven中的DependencyManagement和Dependencies

这里介绍一个在父项目中的根结点中声明dependencyManagement和dependencies的区别 dependencyManagement Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式.通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素.使用pom.xml 中的dependencyManagement 元素能让 所有在子项目中引用一个依赖而不用显式的列出版本号.Maven 会沿着父子层次向

maven中pom的继承以及dependencies与dependencyManagement的区别

https://blog.csdn.net/zzm3280/article/details/84952623 分类专栏: maven 本文转自:https://blog.csdn.net/liutengteng130/article/details/46991829 如有侵权马上删除在上一个项目中遇到一些jar包冲突的问题,之后还有很多人分不清楚dependencies与dependencyManagement的区别,本篇文章将这些区别总结下来. 1.DepencyManagement应用场景当

Maven中的dependencyManagement 意义

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

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 定义了项目属于哪

删除链表中倒数第n个节点

1.给定一个链表,删除链表中倒数第n个节点,返回链表的头节点. 给出链表1->2->3->4->5->null和 n = 2. 删除倒数第二个节点之后,这个链表将变成1->2->3->5->null. 注意 链表中的节点个数大于等于n 挑战 O(n)时间复杂度 解题思路:刚开始看到倒数第n个节点,不禁感慨如果是数组就可以直接倒着来了.不过针对链表,一定要想起来最常用的方法---快慢指针.设一个fast和slow指针:快指针先走n步,然后快慢指针一起走,

Labview中引用,属性节点,局部变量之间的区别

在Labview中我们经常会碰到这样几个概念,那就是控件的引用,属性节点以及局部变量,他们之间到底有哪些区别呢? 首先谈引用,在Labview中长称为引用句柄,在Windows编程中,引用句柄指的是指向指针的指针,换句话说,引用句柄保存的是其他一些数据类型的地址,例如窗口句柄.在Labview中,控件的引用句柄指的也是指向特定数据类型的指针,在Labview中,控件的引用句柄是长度为四个字节,引用句柄不但能够表示控件的类型,还与空间一一对应,这是通过句柄的编号来实现的,引用句柄自身未代表任何空间

DOM中元素节点、属性节点、文本节点的理解

转自:http://www.cnblogs.com/dh616854836/archive/2011/08/14/2138038.html 节点信息 每个节点都拥有包含着关于节点某些信息的属性.这些属性是: nodeName(节点名称) nodeValue(节点值) nodeType(节点类型) nodeType nodeType 属性可返回节点的类型. 最重要的节点类型是: 元素类型 节点类型 元素 1 属性 2 文本 3 注释 8 文档 9 在实际应用中,经常用到的就是元素节点.属性节点和文

[转]XML中元素(Element)与节点(Node)的区别

前言: element是特殊的node 一段纯文本即text-node也是node 但不是element w3c的原话是 A node can be an element node, an attribute node, a text node, or any other of the node types explained in the "Node types" chapter. 一.xmlnode类节点: xmlnode类表示xml文档中的单个节点,其命名空间为:System.X

在Mac OS X中使用mtr诊断路由节点问题

这个工具是从阿里云客服那知道的,当时遇到阿里云CDN的一个节点出现丢包问题,用这个工具诊断路由节点问题. 1. 下载地址:http://rudix.org/packages/mtr.html(在园子里下载) 2. 下载后运行mtr-0.85-0.pkg进行安装 3.  cd /usr/local/sbin ,就会看mtr文件. 4. 运行mtr出现提示 -bash: mtr: command not found 解决方法: alias mtr=/usr/local/sbin/mtr 5. 继续运