java什么在覆盖我的Jacoco gradle依赖项的ASM依赖项
我正在尝试使用Gradle构建我的项目。在运行Jacoco coverage report时,它给了我以下错误:
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)
我与其他一些也集成了Jacoco但没有这个问题的项目进行了比较,结果发现我的项目对asm
有一个可传递的依赖性。在我对当前项目运行./gradlew dependency
之后,我注意到有一个导入的ASM依赖项迫使其版本从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
没有其他软件包可以过渡地依赖ASM,这是唯一的地方。这很奇怪,因为我没有强制ASM版本的gradle resolutionStrategy
。有人能告诉我如何删除强制ASM版本降级吗
请注意,我已经尝试将以下所有内容添加到我的resolutionStrategy中,它仍然解析为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) 个答案