maven dependencies 和 dependencyManagement的区别
曾经有人问我maven中dependencies和dependencyManagement的区别,我当时主要从版本控制以及依赖引入这两方面来回答
- 版本控制
我们一般在顶级pom中使用dependencyManagement来管理一组二方库的依赖,如下所示
1 2 3 4 5 6 7 8 9 10 | <dependencyManagement> <dependencies> <dependency> <groupId>com.xxx.xxx</groupId> <artifactId>yyyxxx</artifactId> <version>1.0.6-SNAPSHOT</version> </dependency> .... </dependencies> </dependencyManagement> |
我们看到dependencyManagement需要dependencies来管理一组二方库的依赖,写在这里的二方库必须指定groupId,artifactId以及version,但是不一定会被应用真正依赖进来,我们最终会在子pom中写
1 2 3 4 5 6 7 | <dependencies> <dependency> <groupId>com.xxx.xxx</groupId> <artifactId>yyyxxx</artifactId> </dependency> .... </dependencies> |
来真正引入一个二方库到我们的应用中,同时这个引入二方库的版本就是我们在顶级pom中指定的版本,当然在子pom中也可以指定自己的版本,这样就不会使用dependencyManagement中指定的version了。
- 依赖引入
写在dependencyManagement中的依赖不一定会引入到应用中,只有在子pom中通过dependencies显式指定后才会真正引入到应用中。
注:
目前暂时想到这两个点,后续发现其他点后再补充