`

maven依赖管理

阅读更多

项目的依赖还有一个特性就是依赖管理(Dependency Management)

如果我们有一个项目,包含多个子模块,而这些子模块可能都需要用到共同的依赖,

如果将这些依赖都放置在项目的pom.xml 中,在遇到依赖升级的时候,我们调整一下项目的pom.xml 里的依赖版本号,就可以让子模块自动升级依赖。

依赖管理很简单,就是在dependencis 元素上包一层dependencyManagement,然后各个子模块只需要声明依赖的groupId 和artifactId,不需要指明版本号,Maven 会自动从项目pom.xml 的dependencyManagment 获取。

 

这里有一个说明,不少程序员将项目用到的所有依赖都声明在pom.xml 中,然后使用依赖管理,各个子模块进行引用。这种做法其实并不太好:首先项目的pom.xml 很长,都是依赖,阅读和查找都很麻烦。

第二是场景,如在项目pom.xml添加servlet-api依赖,远不如在web module中添加更直接。最后还是声明一下,多个模块通用的依赖,放在项目pom.xml中是合适的,

当然如果这样,直接使用dependencies继承也是可以的,具体的操作还是希望各个项目衡量一下,不能一刀切。

 

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

dependencyManagement

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

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

 

例如在父项目里:

<dependencyManagement>  
<dependencies>  
<dependency>  
<groupId>mysql</groupId>  
<artifactId>mysql-connector-java</artifactId>  
<version>5.1.2</version>  
</dependency>  
...  
<dependencies>  
</dependencyManagement>  

 

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

<dependencies>  
<dependency>  
<groupId>mysql</groupId>  
<artifactId>mysql-connector-java</artifactId>  
</dependency>  
</dependencies>  

 

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

 

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

 

dependencies相对于dependencyManagement,所有声明在dependencies里的依赖都会自动引入,

并默认被所有的子项目继承。

分享到:
评论

相关推荐

    Maven依赖管理项目构建工具.pdf

    Maven依赖管理项目构建工具

    maven依赖管理 继承管理

    Maven就可以替我们自动的将当前jar包所依赖的其他所有jar包全部导入进来,无需人工参与,节约了我们大量的时间和精力。用实际例子来说明就是:通过Maven导入commons-fileupload-1.3.jar后,commons-io-2.0.1.jar会被...

    Maven依赖管理项目构建工具(保姆级教学)

    Maven依赖管理项目构建工具(保姆级教学)

    chm版本Maven教程

    Maven依赖管理 Maven自动化部署 Maven Web应用 Eclispe IDE集成Maven NetBeans IDE集成Maven Eclipse构建Maven项目 转换基于Maven的Java项目支持Eclipse IDE 转换基于Maven的Web应用程序支持Eclipse IDE 使用Maven...

    activiti开发项目maven依赖POM文件

    基于ACTIVITI引擎进行开发,利用maven进行依赖管理,本文件列出来具体的依赖项

    maven依赖的压缩包

    Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。

    Maven权威指南 很精典的学习教程,比ANT更好用

    Maven依赖管理 (Dependency Management) 3.5.6. 站点生成和报告 (Site Generation and Reporting) 3.6. 小结 4. 定制一个Maven项目 4.1. 介绍 4.1.1. 下载本章样例 4.2. 定义Simple Weather项目 4.2.1...

    前后端项目启动教程课程,配套后端Maven依赖包

    前后端项目启动教程课程,配套后端Maven依赖包,适用于SpringBoot3.1版本,用于 https://blog.csdn.net/qq_41464123?type=download 系列项目...在Maven中,我们可以使用依赖管理器来管理项目所需的外部JAR包或库文件。

    maven常用依赖.txt

    Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。 书中讲解了网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,引导读者了解和...

    基于SSM的人事管理系统源码+项目说明(使用Maven进行依赖包控制).zip

    基于SSM的人事管理系统源码+项目说明(使用Maven进行依赖包控制).zip 基于SSM的人事管理系统源码+项目说明(使用Maven进行依赖包控制).zip 基于SSM的人事管理系统源码+项目说明(使用Maven进行依赖包控制).zip ...

    Apache-Maven-Cookbook.pdf

    Maven入门开发指南,全面介绍Maven依赖管理工具的使用

    JSONObject相关jar包和maven管理jar包

    JSONObject对象相关的jar包依赖,一共有6个;还有maven环境下管理的jar包

    Maven权威指南中文版(完整)

    3.5.5. Maven依赖管理 (Dependency Management) .............. 36 3.5.6. 站点生成和报告 (Site Generation and Reporting) ...... 38 3.6. 小结 ..................................................... 38 4. ...

    idea插件一键解决maven依赖冲突

    本插件参考58开源插件MavenManager,采用dependencyManagement方式,一键解决Java开发过程中使用maven作为依赖管理时的jar包依赖冲突问题,相比MavenHelper更加省时省力,jar包版本采用最新版本号原则

    用于存放java源码和Thinking of Java的资源.rar

    这些工具伴随着Java一起出现,在各自辉煌之后还在一直使用。 Apache Ant:基于XML的构建...Gradle:使用Groovy(非XML)进行增量构建,可以很好地与Maven依赖管理配合工作。 字节码操作 编程方式操作字节码的开发库。

    Maven使用详解.doc

    Maven 是一个项目管理和构建自动化工具,Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。

    spring框架api中文版.zip(spring开发手册)

    依赖关系管理和命名约定 Spring依赖和依靠弹簧 Maven依赖管理 艾薇依赖管理 1.3.2。 日志 不使用通用日志 使用SLF4J 使用Log4j 二世。 什么是新的在春季3 2。 新特性和增强功能在Spring框架3.0 2.1。 Java 5 2.2。 ...

    apache-maven3.5 依赖包

    eclipse和Myeclipse项目开发中,maven项目管理依赖配置包

Global site tag (gtag.js) - Google Analytics