项目的依赖还有一个特性就是依赖管理(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依赖管理项目构建工具
Maven就可以替我们自动的将当前jar包所依赖的其他所有jar包全部导入进来,无需人工参与,节约了我们大量的时间和精力。用实际例子来说明就是:通过Maven导入commons-fileupload-1.3.jar后,commons-io-2.0.1.jar会被...
Maven依赖管理项目构建工具(保姆级教学)
Maven依赖管理 Maven自动化部署 Maven Web应用 Eclispe IDE集成Maven NetBeans IDE集成Maven Eclipse构建Maven项目 转换基于Maven的Java项目支持Eclipse IDE 转换基于Maven的Web应用程序支持Eclipse IDE 使用Maven...
基于ACTIVITI引擎进行开发,利用maven进行依赖管理,本文件列出来具体的依赖项
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
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依赖包,适用于SpringBoot3.1版本,用于 https://blog.csdn.net/qq_41464123?type=download 系列项目...在Maven中,我们可以使用依赖管理器来管理项目所需的外部JAR包或库文件。
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。 书中讲解了网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,引导读者了解和...
基于SSM的人事管理系统源码+项目说明(使用Maven进行依赖包控制).zip 基于SSM的人事管理系统源码+项目说明(使用Maven进行依赖包控制).zip 基于SSM的人事管理系统源码+项目说明(使用Maven进行依赖包控制).zip ...
Maven入门开发指南,全面介绍Maven依赖管理工具的使用
JSONObject对象相关的jar包依赖,一共有6个;还有maven环境下管理的jar包
3.5.5. Maven依赖管理 (Dependency Management) .............. 36 3.5.6. 站点生成和报告 (Site Generation and Reporting) ...... 38 3.6. 小结 ..................................................... 38 4. ...
本插件参考58开源插件MavenManager,采用dependencyManagement方式,一键解决Java开发过程中使用maven作为依赖管理时的jar包依赖冲突问题,相比MavenHelper更加省时省力,jar包版本采用最新版本号原则
这些工具伴随着Java一起出现,在各自辉煌之后还在一直使用。 Apache Ant:基于XML的构建...Gradle:使用Groovy(非XML)进行增量构建,可以很好地与Maven依赖管理配合工作。 字节码操作 编程方式操作字节码的开发库。
Maven 是一个项目管理和构建自动化工具,Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
依赖关系管理和命名约定 Spring依赖和依靠弹簧 Maven依赖管理 艾薇依赖管理 1.3.2。 日志 不使用通用日志 使用SLF4J 使用Log4j 二世。 什么是新的在春季3 2。 新特性和增强功能在Spring框架3.0 2.1。 Java 5 2.2。 ...
eclipse和Myeclipse项目开发中,maven项目管理依赖配置包