Зависимость Maven с Pom Pom не работает должным образом - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть следующая структура maven.

Parent Pom

<dependencyManagement>
  <dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>2.27</version>
  </dependency>
</dependencyManagement>

Service Pom

<parent>
    <groupId>com.aliseeks.dependencies</groupId>
    <artifactId>AliseeksLive</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
    </dependency>
</dependencies>

Конфликт зависимости:

[INFO] +- org.glassfish.jersey.core:jersey-client:jar:2.27:compile
[INFO] |  +- org.glassfish.jersey.core:jersey-common:jar:2.25.1:compile
[INFO] |  |  +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.25.1:compile

Почему Maven втягивает JerseyCommon 2.25?JerseyClient 2.27 явно зависит от JerseyCommon 2.25?Это потому, что JerseyClient 2.27 POM имеет ${project.version} в качестве переменной и что-то путается с Управлением зависимостями?

Дамп дерева зависимостей

1 Ответ

0 голосов
/ 18 декабря 2018

версия jersey-client 2.27 зависит от версии 2.27 для jersey-common по следующей ссылке:

https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client/2.27

Но она определенно тянет версию 2.25-jersey-common после разрешения транзитивных зависимостейи maven находит версию 2.25 как ближайший ребенок.По этой причине он решает использовать версию 2.25.

Для справки: проблемы конфликта зависимостей такого типа можно легко исследовать с помощью maven-enforcer-plugin.Следующая ссылка дополнительно объясняет использование этого плагина с примером:

https://dzone.com/articles/solving-dependency-conflicts-in-maven

...