【发布时间】:2018-08-09 17:02:16
【问题描述】:
我有一个 spring boot 应用程序(它有一个父 pom),并且通常根据它们的版本管理大量依赖项。
如果我将它添加到我的 pom.xml
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-dynamodb</artifactId>
</dependency>
并列出它表明版本不是最新的依赖项:
./mvnw dependency:list | grep dynamo
[INFO] com.amazonaws:aws-java-sdk-dynamodb:jar:1.11.125:compile
在撰写本文时,最新版本是 1.11.838,我当前的版本已经“过时”了好几个月。
我的 IDE 通常会很好地向我展示何时“管理”依赖项,例如由父 pom。但在这种情况下,它并不表明情况就是这样。
我的想法可能是传递性依赖正在影响这一点,但我想要一种更经验的方式来找出答案。
当然,我可以只为依赖项添加一个显式的版本元素,或者为这个依赖项添加一个显式的依赖管理元素。但是我的问题本质上更具学术性,我想了解为什么 maven 确定这是要解决的正确版本。
理想情况下,我想了解的是存在哪些工具或流程来“调试”这个,例如一个特定的 maven 插件,它可能有助于显示一个版本是如何被解析的。
mvn dependency:tree | grep -i dynamo | wc -l 的结果是1。这(我认为)表明它没有在传递依赖项中多次出现。
【问题讨论】:
-
你用的是哪个版本的spring-boot?
-
在这种情况下
1.5.15.RELEASE。如果我在 spring boot2.0.4.RELEASE中做同样的事情,我会得到发电机依赖1.11.336- 但仍然不是最新的。