我们知道dependencies是可以被继承的,这个时候我们就想到让我们的发生了共用的依赖元素转移到parent中,这样我们又进一步的优化了配置。可是问题也随之而来,如果有一天我创建了一个新的模块,但是这个模块不需要这些parent的依赖,这时候如何处理?
是的,maven的依赖管理就是来解决这个问题的
增加一个新的元素:dependencyManagement
从上面的列表中我们发现dependencyManagement也是可以被继承的,这恰恰满足了我们的需要,它既能够让子模块继承到父模块的依赖配置,又能保证子模块依赖使用的灵活性
dependencyManagement的特性:在dependencyManagement中配置的元素既不会给parent引入依赖,也不会给它的子模块引入依赖,仅仅是它的配置是可继承的
最佳实践:
这时候我们就可以在父POM中声明这些依赖:
- <properties>
- <target.version>2.5.6</target.version>
- </properties>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>your groupId</groupId>
- <artifactId>your artifactId</artifactId>
- <version>${target.version}</version>
- </dependency>
- </dependencies>
- </dependencyManagement>
子模块的POM继承这些配置:子模块继承这些配置的时候,仍然要声明groupId和artifactId,表示当前配置是继承于父POM的,从而直接使用父POM的版本对应的资源
- <dependencies>
- <dependency>
- <groupId>your groupId</groupId>
- <artifactId>your artifactId</artifactId>
- </dependency>
- </dependencies>
这个可以有效的避免多个子模块使用依赖版本不一致的情况,有助于降低依赖冲突的几率。注:只有子模块配置了继承的元素,才会真正的有效,否则maven是不会加载父模块中声明的元素。