Gradle多项目执行jacocoTestReport报错找不到org.jacoco:org.jacoco.ant:0.8.5
问题原因
- 你已显式通过
files()方法为jacocoAgent指定了本地zip包路径,该配置不需要走仓库解析逻辑,Gradle可以直接读取指定文件,因此可正常使用。 jacocoAnt依赖是通过Maven坐标org.jacoco:org.jacoco.ant:0.8.5声明的,需要走你配置的ivy本地仓库规则匹配文件:- 你配置的ivy规则仅会匹配对应路径下的单独jar包,不会自动解压zip包读取内部文件
- 你当前仅在仓库路径下存放了完整jacoco压缩包,未按规则存放单独的
org.jacoco.ant-0.8.5.jar文件,因此解析失败
解决方案
方案1(最便捷,无需修改文件结构)
直接显式指定jacocoAnt的文件来源,跳过仓库解析,和jacocoAgent的配置逻辑保持一致,在根项目build.gradle中添加如下配置:
jacocoAnt zipTree("${rootProject.rootDir}/path/to/jacoco/zip/file/jacoco-0.8.5.201910111838.zip").matching { include "lib/org.jacoco.ant-*.jar" include "lib/jacocoant.jar" }
zipTree会自动解压指定zip包,匹配内部对应的ant相关jar文件,不需要修改现有仓库结构即可直接生效。
方案2(适配现有ivy规则)
解压jacoco压缩包,将lib目录下的org.jacoco.ant-0.8.5.jar单独放到ivy仓库对应的路径下:
- 按照你的ivy规则创建目录结构:
org/jacoco/ - 将jar包放入该目录,即可匹配到ivy的路径规则,完成依赖解析。
内容的提问来源于stack exchange,提问作者bernieslearnings
相关产品推荐
相关产品推荐

