0

When I run gradle dependencies on a project, it shows the dependency tree, and some of them are looking like:

+--- 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

For the last 3 lines, each line has two versions, 4.0 and 5.0.3.

What information can I get from this line? Does it mean the rest-assured 1.8.1 was relied on 4.0, but now it found a new version 5.0.3 existed, so it just use the new version?

Is it safe to use it this way? Is it better to upgrade the rest-assured to a new version which replied on ASM 5.0.3?

Freewind
  • 193,756
  • 157
  • 432
  • 708

1 Answers1

1

tl;dr

Have a look at this answer.

explanation

It means that among dependencies there are conflicted - with same group and artifactId. They are often transitively downloaded with dependencies specified. Gradle tries to resolve it automatically - by picking the latest version (signed with ->). Conflicting dependencies can be excluded.

Community
  • 1
  • 1
Opal
  • 81,889
  • 28
  • 189
  • 210