Dependency Management 实际上允许您集中管理依赖版本,而无需在所有子项中添加依赖(谈论公共依赖)。当拥有多继承级别的项目时,这带来了很大的帮助,其中子项目可以像您的项目一样从父 pom 获取传递依赖项。
关于版本覆盖,请不要误会,因为您可以覆盖继承的依赖版本,只需在需要拥有自己版本的某些工件的子模块中声明它即可。
这是一个示例展示,说明了一个名为 root 的简单项目,并具有两个子模块; blessed-module 继承了他的父神器版本和一个odd-module 选择了他自己的路径和他自己的神器版本:
root
\+ blessed-module
+ odd-module
父 pom 将声明具有以下描述符 (pom.xml) 的集中式依赖项:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>dependency.management.showcase</groupId>
<artifactId>root</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<modules>
<module>blessed-module</module>
<module>odd-module</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.2.8.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
子模块如下,以blessed-module开头:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>dependency.management.showcase</groupId>
<artifactId>root</artifactId>
<version>1.0</version>
</parent>
<artifactId>child-module</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
</dependencies>
</project>
和odd-module的pom.xml文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>root</artifactId>
<groupId>dependency.management.showcase</groupId>
<version>1.0</version>
</parent>
<artifactId>odd-module</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
</project>
现在不需要进一步的操作,只需导航到 root 主路径并从终端执行以下 maven 命令,即可将所有依赖关系树显示在您面前
mvn dependency:tree
您将看到 spring-core 工件版本略有不同的子模块:
[INFO] ------------------------------------------------------------------------
[INFO] Building root 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ root ---
[INFO] dependency.management.showcase:root:pom:1.0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building child-module 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ child-module ---
[INFO] dependency.management.showcase:blessed-module:jar:1.0
[INFO] \- org.springframework:spring-core:jar:3.2.8.RELEASE:compile
[INFO] \- commons-logging:commons-logging:jar:1.1.3:compile
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building odd-module 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ odd-module ---
[INFO] dependency.management.showcase:odd-module:jar:1.0
[INFO] \- org.springframework:spring-core:jar:2.5:compile
[INFO] \- commons-logging:commons-logging:jar:1.1:compile
[INFO] ------------------------------------------------------------------------