1.dependencies 和 dependencyManagement的区别
main : 项目中多个模块间公共依赖的版本号、scope的控制
业务场景:
当多模块项目中,如果每个模块都有一些公共的依赖,
- 如果每个模块都独自管理的情况下,就有可能造成每个模块的版本号不一致的情况, 开发测试环境下对jar包不同版本的处理有可能不一致,造成运行和测试结果的不一致
- 版本升级时,会到处修改版本号,不易
所以在多模块项目下需要一个公共的top module来管理这些公共项目依赖的区别
使用规则
- 里 没有定义version的话,maven继承声明的version版本,如果dependencyManagement没有声明,报错
- 里 定义version的话,覆盖父类的dependencyManagement声明
- 父类的dependencyManagement 只是声明版本号和scope,不会引入,所以需要子类引入
example
parent-module
<properties>
<commons.logging.version>1.1.1</commons.logging.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>${commons.logging.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</dependencyManagement>
son-mudule
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
</dependencies>