如何理解`gradle dependencies`中的`org.ow2.asm:asm-tree:4.0 -> 5.0.3 (*)`?

How to understand `org.ow2.asm:asm-tree:4.0 -> 5.0.3 (*)` in `gradle dependencies`?

当我 运行 gradle dependencies 在一个项目上时,它显示了依赖树,其中一些看起来像:

+--- org.ow2.asm:asm:5.0.3

+--- com.jayway.restassured:rest-assured:1.8.1
|    +--- org.codehaus.groovy:groovy:2.1.2
|    |    +--- antlr:antlr:2.7.7
|    |    +--- org.ow2.asm:asm-tree:4.0 -> 5.0.3 (*)
|    |    +--- org.ow2.asm:asm-commons:4.0 -> 5.0.3 (*)
|    |    +--- org.ow2.asm:asm:4.0 -> 5.0.3

最后3行,每行有两个版本,4.05.0.3

我可以从这条线上得到什么信息?是不是说rest-assured 1.8.1依赖了4.0,现在发现有新版本5.0.3,就用新版本?

这样使用安全吗?将 rest-assured 升级到在 ASM 5.0.3 上回复的新版本是否更好?

tl;dr

看看 答案。

说明

这意味着在依赖项中存在 冲突 - 具有相同的组和 artifactId。它们通常在指定依赖项的情况下被传递下载。 Gradle 尝试自动解决它 - 通过选择最新版本(用 -> 签名)。可以排除冲突的依赖项。