在有一个testA
依赖于 vaadin-client-compiler 的子模块,该 vaadin-client-compiler 依赖于 commons-lang3 3.1 版,它还依赖于另一个testB
依赖于 commons-lang3 3.4 版的子模块。
我希望testA
使用 3.4 版本,因为testB
它依赖于它,但它使用 3.1 版本。我可以通过添加[]
到testB
项目中的版本来解决它,但为什么会这样?为什么 maven 在不被强制的情况下不解析正确的版本?
MCVE:
家长:
<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>
<groupId>test</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>test</name>
<packaging>pom</packaging>
<modules>
<module>testB</module>
<module>testA</module>
</modules>
</project>
依赖的孩子
<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>test</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>com.vaadin</groupId>
<version>7.6.8</version>
<artifactId>vaadin-client-compiler</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>testB</groupId>
<artifactId>testB</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<groupId>testA</groupId>
<artifactId>testA</artifactId>
</project>
和受抚养的孩子
<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>test</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>testB</groupId>
<artifactId>testB</artifactId>
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
</dependencies>
</project>