虽然我有一个指定版本18的<dependencyManagement>部分,但是Maven正在转移guava版本16.
快速摘要:
gwizard-example 依赖于取决于 gwizard-configgwizard-config 有一个父母pom, gwizard-parentgwizard-parent 有<dependencyManagement>,它指定了番石榴的第18版值得庆幸的是这是一个开源项目,所以你可以直接看到poms:gwizard-parent,gwizard-config,gwizard-example.但是,这里有重要的一点gwizard-parent:
<properties>
<guava.version>18.0</guava.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)
...和gwizard-example中声明的简单依赖:
<properties>
<gwizard.version>0.5</gwizard.version>
</properties>
<dependencies>
<dependency>
<groupId>org.gwizard</groupId>
<artifactId>gwizard-config</artifactId>
<version>${gwizard.version}</version>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
gwizard-config的依赖树正确显示了番石榴18:
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ gwizard-config ---
[INFO] org.gwizard:gwizard-config:jar:0.5
[INFO] +- com.google.inject:guice:jar:4.0-beta5:compile
[INFO] | \- com.google.guava:guava:jar:18.0:compile
Run Code Online (Sandbox Code Playgroud)
但是,gwizard-example的依赖树显示了guava 16(导致问题):
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ gwizard-example ---
[INFO] org.gwizard:gwizard-example:jar:1.0-SNAPSHOT
[INFO] +- org.gwizard:gwizard-config:jar:0.5:compile
[INFO] | +- com.google.inject:guice:jar:4.0-beta5:compile
[INFO] | | \- com.google.guava:guava:jar:16.0.1:compile
Run Code Online (Sandbox Code Playgroud)
这是使用Maven v3.2.5.我很困惑.救命?
可能相关:父母中的dependencyManagement被忽略
更新:github上链接的poms正在改变; gwizard-services在gwizard-example"修复"问题中添加一个依赖(直接声明一个guava dep).这里仍然存在某种不良的潜在行为.
更新:创建此JIRA问题
有一件简单的事情.A dependencyManagement没有声明真正使用的依赖项,它只能定义可以使用的版本等.
如果你定义这样的东西,它不会导致改变.
<properties>
<guava.version>18.0</guava.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)
如果你真的想要覆盖你树中使用的版本,你需要定义一个真正的依赖:所以基于上面的定义,你还需要添加以下内容:
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
如果您已添加此项,请稍后通过mvn dependency:tree.
| 归档时间: |
|
| 查看次数: |
5182 次 |
| 最近记录: |