本文主要是介绍【Maven】dependencyManagement节点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
dependencyManagement 元素
在Maven中,使用 dependencyManagement 元素来提供一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM中可以看到dependencyManagement元素(也可以在子项目POM中声明)。
使用pom.xml中的dependencyManagement元素能让所有在子项目中引用一个依赖而不用显式的列出版本号 version 。 Maven会沿着父子层向上走,直到找到一个拥有dependencyManagement元素的项目,然后就会使用这个dependencyManagement元素中指定的版本号。(可参见Spring项目中提供的dependencyManagement元素设置)
通过在父pom.xml中指明 dependencyManagement 元素的方式 ,Maven结合项目继承来管理依赖。
在多模块应用中,可能多个子项目会有共同的依赖。此时为了正确运行,必须让所有的子项目使用依赖项的同一版本。必须确保应用的各个项目的依赖项和版本一致,才能保证测试和发布的结果是相同的。因此,应该在顶层的pom中定义共同的依赖关系。
示例:
在顶层应用的pom中,dependencyManagement 段如下:
<dependencyManagement><dependencies ><dependency ><groupId>com.devzuz.mvnbook.proficio</groupId><artifactId>proficio-model</artifactId><version>${project.version}</version></dependency ><dependency ><groupId>com.devzuz.mvnbook.proficio</groupId><artifactId>proficio-api</artifactId><version>${project.version}</version></dependency ><dependency ><groupId>com.devzuz.mvnbook.proficio</groupId><artifactId>proficio-core</artifactId><version>${project.version}</version></dependency ><dependency ><groupId>com.devzuz.mvnbook.proficio</groupId><artifactId>proficio-store-memory</artifactId><version>${project.version}</version></dependency ><dependency ><groupId>com.devzuz.mvnbook.proficio</groupId><artifactId>proficio-store-xstream</artifactId><version>${project.version}</version></dependency ><dependency ><groupId>org.codehaus.plexus</groupId><artifactId>plexus-container-default</artifactId><version>1.0-alpha-9</version></dependency ></dependencies >
</dependencyManagement>
顶层POM中的dependencies 与 dependencyManagement 中的 dependencies 元素有一个重要的区别:
dependencyManagement 中的 dependencies 元素只表明依赖项版本的优先选择,并不影响项目的依赖项;而 dependencies 元素则影响项目的依赖项。
在子项目的POM中:
<project><parent><groupId>com.devzuz.mvnbook.proficio</groupId><artifactId>proficio</artifactId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>proficio-api</artifactId><packaging>jar</packaging><name>Proficio API</name><dependencies ><dependency ><groupId>com.devzuz.mvnbook.proficio</groupId><artifactId>proficio-model</artifactId></dependency ></dependencies ></project>
其中没有指明依赖项的版本 version 信息,在顶层POM中的dependencyManagement中表明其优先选择的版本。为使其模块POM完整,其版本信息会注入其中。
只有当外层的dependencies 元素中没有指明版本信息时, dependencyManagement 中的 dependencies 元素才会起作用。
这篇关于【Maven】dependencyManagement节点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!