码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-07 12:41:16      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:maven dependencies dependencymanagement properties标签 pom.xml变量

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标签,非常清晰明了。


本文出自 “天行者,在云端” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1643709

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

标签:maven dependencies dependencymanagement properties标签 pom.xml变量

原文地址:http://tianxingzhe.blog.51cto.com/3390077/1643709

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!