`

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`和`dependencies`元素都是用来管理项目依赖的重要部分,但它们的作用方式有所不同。理解这两个元素的区别对于构建稳定、可维护的多模块项目至关重要。 一、dependency...

    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。 dependencies dependencies 是 Maven 项目中最基本的依赖管理机制。它定义了项目中需要的依赖项,包括 jar 包...

    Maven的Dependency测试

    当多个依赖有相同的`groupId`和`artifactId`但不同版本时,Maven会根据`dependencyManagement`来解决冲突。 4. **测试框架集成** Maven支持与JUnit、TestNG等测试框架集成,通过`maven-surefire-plugin`插件运行...

    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-dependencies.rar

    在pom.xml文件中,我们可以通过&lt;dependencyManagement&gt;标签来定义统一的依赖版本,子模块可以直接引用而不必指定具体版本。 接下来,我们来看看资源包中的内容。"maven-dependencies"包含了最新的Maven依赖集合,...

    maven-dependency-analyzer:Apache Maven依赖性分析器

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

    apache-maven-3.8和3.6

    在两个版本中,Maven 都会使用`&lt;dependencies&gt;`标签来声明项目所需的库,并使用`&lt;dependencyManagement&gt;`来统一管理版本。 - Maven 3.8 在依赖解析方面可能更加智能,减少了不必要的下载和冲突。 3. **插件管理**...

    maven 中引入依赖的包

    如果无法解决冲突,可以使用`dependencyManagement`标签来统一管理所有模块的依赖版本。 总的来说,Maven的依赖管理是其强大功能的一部分,它极大地简化了Java项目的构建流程,让开发者能够更专注于代码编写,而...

    maven3.0 maven3.0

    - **合理管理依赖**:避免硬编码版本号,使用`&lt;dependencyManagement&gt;`元素统一管理版本。 - **使用父POM**:对于多模块项目,创建一个父POM来共享共通的配置。 - **持续集成**:结合Jenkins、Git等工具实现自动化...

    maven本地仓库

    此外,掌握`dependencyManagement`和`dependencies`的区别也是很重要的。 ### 优化本地仓库 为了提高效率,可以通过以下方式优化Maven本地仓库: 1. 使用代理服务器:对于企业环境,可以通过配置Maven使用内部的...

    maven-root.pom

    通过在根 POM 中定义 `&lt;dependencyManagement&gt;` 标签,我们可以指定一组依赖的版本,子模块在引用这些依赖时无需指定具体版本,简化了版本管理。例如: ```xml &lt;dependencyManagement&gt; &lt;dependencies&gt; ...

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

    在现代软件开发中,项目往往...总结,Maven在多模块开发中的作用主要体现在统一项目配置、管理依赖、简化构建流程和提高团队协作效率等方面。通过合理地使用Maven,开发者可以更加专注于业务逻辑,而非项目构建的琐事。

    apache-maven-3.6.3安装包

    Maven通过POM中的`&lt;dependencies&gt;`标签管理项目所需的库。它会自动下载这些依赖及其传递性依赖,避免了库冲突问题。 3. **仓库(Repository)** Maven使用仓库系统来存储和检索依赖。默认本地仓库位于用户主目录...

    maven配置文件和仓库

    `dependencyManagement`元素用来管理依赖版本,使得在子模块中只需要声明groupId和artifactId,版本号会自动继承自父模块。`build`元素包含了编译、测试、打包、部署等构建过程的配置。 Maven的仓库系统是其能够...

    Apache-maven-3.1.1

    2. **依赖管理(Dependency Management)**:Maven通过POM中的&lt;dependencies&gt;元素管理项目所需的各种库。它自动下载这些库并将其添加到类路径中,解决了Java项目中常见的“jar地狱”问题。 3. **仓库(Repository)...

    Maven实战 pdf+源码

    了解并熟练使用dependencyManagement和dependencies元素是理解和掌握Maven的关键。 书中还将涉及Maven的生命周期和构建阶段,如compile、test、package、install和deploy等,以及如何自定义构建过程。同时,插件...

    maven-3.3.9.zip

    Maven通过`pom.xml`中的`dependencyManagement`元素来集中管理多个模块的依赖版本,确保项目的一致性。 ### 10. 多模块项目 对于包含多个子项目的大型项目,可以使用Maven的聚合项目(aggregator project)和模块...

Global site tag (gtag.js) - Google Analytics