与父型POM的依赖性无法正常工作



i具有以下Maven结构。

父pom

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

服务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.25JerseyClient 2.27显然取决于JerseyCommon 2.25?这是因为JerseyClient 2.27 POM将${project.version}作为变量,并且它以某种方式与依赖关系管理混乱?

依赖树ump

Jersey-client 2.27版本取决于泽西岛 - common 2.27版本,根据以下链接:

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

但是,在解决了及物依赖性之后,它肯定会拉出2.25版的泽西岛,而Maven将2.25版本作为最近的孩子。这就是它决定拉2.25版本的原因。

引用的是,可以在maven-enforcer-plugin的帮助下轻松研究这种类型的依赖冲突问题。以下链接进一步说明了此插件的用法:

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

最新更新