Если у вас есть один дочерний модуль testA
, который зависит от 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>
testB
и именно там она должна быть указана, я не использую ее больше нигде в других модулях.vaadin-client-compiler
о необходимости этого я даже не подозревал до того, как столкнулся с этой проблемой. - person Black Trans Woman   schedule 02.05.2018[3.4]
также является решением, как я упоминал в своем вопросе. - person Black Trans Woman   schedule 02.05.2018testA
или в родительском pom? - person Black Trans Woman   schedule 02.05.2018