欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

说说 Maven dependency 与 dependencyManagement 之间的区别

程序员文章站 2022-05-04 12:45:13
...

pom.xml文件中,所依赖的jar包版本,有两种判断途径1

说说 Maven dependency 与 dependencyManagement 之间的区别

  1. 如果dependencies里的某个dependency没有声明version元素,那么maven就会到dependencyManagement里面去找有没有同一artifactId和groupId的版本声明,如果有,就继承它,如果没有就会报错。因为每个dependency必须有一个确定的version。

  2. 如果dependencies里的某个dependency声明了version元素,那么直接以dependency里的version为准。

比如以下配置:

<dependencyManagement>
   <dependencies>
       <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-dependencies</artifactId>
           <version>Hoxton.SR8</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
   </dependencies>
</dependencyManagement>
<dependencies>
   <!--spring-cloud-config-->
   <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-config</artifactId>
   </dependency>
   <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-config-server</artifactId>
   </dependency>
</dependencies>

因为我们在 dependencies/dependency 中都没有明确指定依赖包的版本号,所以 Maven 会在 dependencyManagement/dependencies/dependency 中查找 spring-cloud-starter-config 与 spring-cloud-config-server 的版本号。

这个示例的情况更复杂一些,因为 spring-cloud-starter-config 与 spring-cloud-config-server 的版本号并不是直接定义在 dependencyManagement 中,而是交由 spring-cloud-dependencies 统一管理,上述两个依赖包交由其统一定义。


参考资料:
【1】 Maven中的dependencyManagement 意义.

相关标签: Maven maven