What is overriding the ASM dependency for my Jacoco gradle dependency

Viewed 217

I am trying to build my project using Gradle. While running Jacoco coverage report, it gives me this error:

Caused by: java.io.IOException: Error while analyzing XXX.class.
        at org.jacoco.core.analysis.Analyzer.analyzerError(Analyzer.java:162)
        at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:134)
        at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:157)
        at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:193)
        at org.jacoco.ant.ReportTask.createBundle(ReportTask.java:573)
        at org.jacoco.ant.ReportTask.createReport(ReportTask.java:545)
        at org.jacoco.ant.ReportTask.execute(ReportTask.java:496)
        ... 174 more
Caused by: java.lang.IllegalArgumentException
        at org.objectweb.asm.ClassVisitor.<init>(ClassVisitor.java:70)
        at org.jacoco.core.internal.flow.ClassProbesVisitor.<init>(ClassProbesVisitor.java:38)
        at org.jacoco.core.internal.flow.ClassProbesVisitor.<init>(ClassProbesVisitor.java:28)
        at org.jacoco.core.internal.analysis.ClassAnalyzer.<init>(ClassAnalyzer.java:59)
        at org.jacoco.core.analysis.Analyzer$1.<init>(Analyzer.java:97)

I compared with some other projects that also integrated Jacoco but don't have this issue, it turns out that my project has a transitive dependency on asm. After I run ./gradlew dependency on my current project, I noticed that there is an imported ASM dependency forcing down its version from 8.0.1 -> 7.0.

jacocoAnt - The Jacoco ant tasks to use to get execute Gradle tasks.
\--- org.jacoco:org.jacoco.ant:0.8.6
     +--- org.jacoco:org.jacoco.core:0.8.6
     |    +--- org.ow2.asm:asm:8.0.1 -> 7.0
     |    +--- org.ow2.asm:asm-commons:8.0.1 -> 7.0
     |    |    +--- org.ow2.asm:asm:7.0
     |    |    +--- org.ow2.asm:asm-tree:7.0
     |    |    |    \--- org.ow2.asm:asm:7.0
     |    |    \--- org.ow2.asm:asm-analysis:7.0
     |    |         \--- org.ow2.asm:asm-tree:7.0 (*)
     |    \--- org.ow2.asm:asm-tree:8.0.1 -> 7.0 (*)
     +--- org.jacoco:org.jacoco.report:0.8.6
     |    \--- org.jacoco:org.jacoco.core:0.8.6 (*)
     \--- org.jacoco:org.jacoco.agent:0.8.6

There is no other packages that transitively dependent on ASM, this is the only place. This is quite strange as I have no gradle resolutionStrategy that force the ASM version anywhere. Can someone tell me how I can remove the forced ASM version downgrade?

Note that I have already tried to add all of the following to my resolutionStrategy and it still resolved to version 7.0.

            force 'org.ow2.asm:asm-analysis:8.0.1'
            force 'org.ow2.asm:asm-tree:8.0.1'
            force 'org.ow2.asm:asm-commons:8.0.1'
            force 'org.ow2.asm:asm:8.0.1
0 Answers
Related