这里介绍一个在父项目中的根结点中声明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里的依赖都会自动引入,并默认被所有的子项目继承。
classifier
如果你要发布同样的代码,但是由于技术原因需要生成两个单独的构件,你就要使用一个分类器(classifier)。例如,如果你想要构建两个单独的构件成JAR,一个使用Java 1.4 编译器,另一个使用Java 6 编译器,你就可以使用分类器
来生成两个单独的JAR构件,它们有同样的groupId:artifactId:version组合。如果你的项目使用本地扩展类库,你可以使用分类器为每一个目标平台生成一个构件。分类器常用于打包构件的源码,JavaDoc 或者二进制集合。
也可以在子pom中引用
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.1.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
相关推荐
在Maven项目中,`dependencyManagement`和`dependencies`元素都是用来管理项目依赖的重要部分,但它们的作用方式有所不同。理解这两个元素的区别对于构建稳定、可维护的多模块项目至关重要。 一、dependency...
If you are working with Java or Java EE projects and you want to take advantage of Maven dependency management, then this book is ideal for you. This book is also particularly useful if you are a ...
maven-dependency-plugin-2.8.jar
当多个依赖有相同的`groupId`和`artifactId`但不同版本时,Maven会根据`dependencyManagement`来解决冲突。 4. **测试框架集成** Maven支持与JUnit、TestNG等测试框架集成,通过`maven-surefire-plugin`插件运行...
今天,我们将详细介绍 Maven 依赖管理机制中的两个重要概念:dependencies 和 dependencyManagement。 dependencies dependencies 是 Maven 项目中最基本的依赖管理机制。它定义了项目中需要的依赖项,包括 jar 包...
在实际应用中,开发者可能需要配置Maven的pom.xml文件,声明maven-dependency-plugin和maven-cobertura-plugin,并设置相应的执行目标和参数。例如,可以使用`dependency:copy-dependencies`目标来复制项目依赖,或...
Maven的Dependency是项目构建中的核心概念,它允许开发者声明项目所需的外部库,Maven会自动处理这些库的下载和构建路径。本文将深入探讨Maven的Dependency机制及其使用方法。 首先,我们需要理解Dependency的基本...
在使用Apache Maven构建Java项目时,开发者可能会遇到一个棘手的问题:在IntelliJ IDEA (例如版本2019.2.2) 的Maven Projects工具窗口中,只有生命周期(Lifecycle)显示,而依赖(Dependencies)和插件(Plugins)...
Maven依赖插件(maven-dependency-plugin)是Maven生态系统中的一个重要组成部分,它提供了多种目标(goals),如"copy-dependencies"和"unpack",帮助开发者在处理项目依赖时进行更精细的操作。 标题提到的问题...
maven-dependency-tree-1.2.jar
maven-dependency-plugin-2.1.jar
dependencyManagement 是表⽰依赖 jar 包的声明,即你在项⽬中的 dependencyManagement 下声明了依赖,maven 不会加 载该依赖,dependencyManagement 声明可以被继承。 dependencyManagement 的⼀个使⽤案例是当有⽗...
maven-dependency-management-extension-1.0.1.jar
maven-dependency-management-extension-1.0.0.jar
maven-dependency-tree-parser-1.0.6.jar,用于mvn depenency:tree的记录解析
maven-dependency-management-extension-1.1.0-sources.jar
maven-dependency-management-extension-1.0.1-sources.jar
maven-dependency-management-extension-1.0.0-sources.jar
Learn how to use Gradle's powerful dependency management through extensive code samples, and discover how to define, customize, and deploy dependencies About This Book Be in total control of your ...
maven-dependency-versions-check-plugin-2.0.2-sources.jar