`

Maven中的DependencyManagement和Dependencies区别

阅读更多

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

dependencyManagement

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

 

例如在父项目里:

Xml代码  收藏代码
  1. <dependencyManagement>  
  2. <dependencies>  
  3. <dependency>  
  4. <groupId>mysql</groupId>  
  5. <artifactId>mysql-connector-java</artifactId>  
  6. <version>5.1.2</version>  
  7. </dependency>  
  8. ...  
  9. <dependencies>  
  10. </dependencyManagement>  

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

 

Xml代码  收藏代码
  1. <dependencies>  
  2. <dependency>  
  3. <groupId>mysql</groupId>  
  4. <artifactId>mysql-connector-java</artifactId>  
  5. </dependency>  
  6. </dependencies>  

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

 

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

dependencies

相对于dependencyManagement,所有声明在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。

 

classifier

如果你要发布同样的代码,但是由于技术原因需要生成两个单独的构件,你就要使用一个分类器(classifier)。例如,如果你想要构建两个单独的构件成JAR,一个使用Java 1.4 编译器,另一个使用Java 6 编译器,你就可以使用分类器
来生成两个单独的JAR构件,它们有同样的groupId:artifactId:version组合。如果你的项目使用本地扩展类库,你可以使用分类器为每一个目标平台生成一个构件。分类器常用于打包构件的源码,JavaDoc 或者二进制集合。

分享到:
评论

相关推荐

    dependencyManagement与dependencies区别.docx

    为了项目的正确运行,必须让所有的子模块使用依赖项的统一版本,必须...Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。

    Apache Maven Dependency Management

    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 dependencies与dependencyManagement的区别详解

    主要介绍了Maven dependencies与dependencyManagement的区别详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Maven 实战问题和最佳实践.pdf

    1、dependencies 和 dependencyManagement,plugins 和 pluginManagement 有什么区别? dependencyManagement 是表⽰依赖 jar 包的声明,即你在项⽬中的 dependencyManagement 下声明了依赖,maven 不会加 载该依赖...

    Gradle.Dependency.Management.1784392782

    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-analyzer:Apache Maven依赖性分析器

    这样,您可以确保您不会浪费时间在Apache Maven范围之外的东西上。 假设您的问题不存在,请提交该问题的票证。 清楚地描述问题,包括在出现错误时重现的步骤。 确保填写您知道存在问题的最早版本。 在GitHub上...

    使用Maven管理进行多模块开发案例

    &lt;dependencyManagement&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;javax.servlet&lt;/groupId&gt; &lt;artifactId&gt;servlet-api&lt;/artifactId&gt; &lt;version&gt;2.5&lt;/version&gt; &lt;scope&gt;provided&lt;/scope&gt; &lt;/dependency&gt; ...

    springboot-rest,cors跨域

    在Maven项目中,您将在&lt;dependencyManagement /&gt;POM 的部分中声明此依赖项,如下所示: 示例1.使用Spring Data版本系列BOM &lt;dependencyManagement&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework....

    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-ant-tasks-2.1.3-src

    Dependency management - including transitive dependencies, scope recognition and SNAPSHOT handling Artifact deployment - deployment to a Maven repository (file integrated, other with extensions) POM ...

    maven-ant-tasks-2.1.3

    Dependency management - including transitive dependencies, scope recognition and SNAPSHOT handling Artifact deployment - deployment to a Maven repository (file integrated, other with extensions) POM ...

    aliyun-spring-boot:用于Aliyun服务的Spring Boot Starters

    &lt; dependencyManagement&gt; &lt; dependencies&gt; &lt; dependency&gt; &lt; groupId&gt;com.alibaba.cloud&lt;/ groupId&gt; &lt; artifactId&gt;aliyun-spring-boot-dependencies &lt; version&gt;1.0.0 &lt; type&gt;pom &lt; scope&gt;import &lt;/ ...

    Java人才

    Google Talent Solution Java客户端Java惯用客户端。快速开始如果您将Maven与一起使用,请将其添加到pom.xml文件中&lt; dependencyManagement&gt; &lt; dependencies&gt; &lt; dependency&gt; &lt; groupId&gt;...&lt;/ dependencies&gt;&lt;/ dependency...

    entando-core-bom

    在您的Maven POM的dependencyManagement部分中,插入此依赖关系的最新版本,但具有“ import”作用域和“ pom”类型: &lt;dependencyManagement&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.entando&lt;/group

    Java视觉

    如果您将Maven与一起使用,请将其添加到pom.xml文件中 &lt; dependencyManagement&gt; &lt; dependencies&gt; &lt; dependency&gt; &lt; groupId&gt;com.google.cloud&lt;/ groupId&gt; &lt; artifactId&gt;libraries-bom &lt; version&gt;16.4.0 &lt; type&gt;...

    java-spanner

    如果您将Maven与一起使用,请将其添加到pom.xml文件中。 &lt; dependencyManagement&gt; &lt; dependencies&gt; &lt; dependency&gt; &lt; groupId&gt;com.google.cloud&lt;/ groupId&gt; &lt; artifactId&gt;libraries-bom &lt; version&gt;19.0.0 ...

    java推荐

    适用于Java的Google Recommender客户端Java惯用的客户端。快速开始如果您将Maven与一起使用,请将其添加到pom.xml文件中。 &lt; dependencyManagement&gt; &lt; dependencies&gt; &lt; ...&lt;/ dependencies&gt;&lt;/ dependencyManagement&gt;

    java-dataproc

    Google Dataproc Java客户端Java惯用客户端。快速开始如果您将Maven与一起使用,请将其添加到pom.xml文件中。 &lt; dependencyManagement&gt; &lt; dependencies&gt; &lt; ...&lt;/ dependencies&gt;&lt;/ dependencyManagement&gt;&lt; depen

    java-storage

    如果您将Maven与一起使用,请将其添加到pom.xml文件中。 &lt; dependencyManagement&gt; &lt; dependencies&gt; &lt; dependency&gt; &lt; groupId&gt;com.google.cloud&lt;/ groupId&gt; &lt; artifactId&gt;libraries-bom &lt; version&gt;19.0.0 ...

Global site tag (gtag.js) - Google Analytics