Gradle构建失败:jacocoTestReport配置中enabled()方法未找到
解决Gradle构建失败:jacocoTestReport的enabled方法报错
本地导入已有Spring Boot项目后,Gradle构建失败(此前项目可正常构建),控制台报错:
构建文件‘C:\Users\path\ce-paddle-core\build.gradle’第223行:评估根项目‘ce-paddle-core’时出现问题。> 无法在org.gradle.api.reporting.internal.TaskGeneratedSingleFileReport类型的Report xml上找到参数为[true]的enabled()方法。
项目中相关的build.gradle配置片段:
jacoco { toolVersion = jacocoVersion } jacocoTestReport { reports { xml.enabled true //line 223 html.enabled true html.destination file("${buildDir}/reports/coverage") } afterEvaluate { def excludeSourceDirs = jacocoExcludePackage.split(',') getClassDirectories().setFrom(files(classDirectories.files.collect { def path =it.getPath() fileTree(dir: it).filter { def fileDir = it.getParent().replace(path+'/', '').replace('/', '.') def fileName = it.getName().replace('.class', '') if(!excludeSourceDirs.contains(fileDir) && !excludeSourceDirs.contains(fileDir+'.'+fileName)){ return it } } })) } }
注释第223、224行可解决构建问题,但无法生成测试报告;添加以下Test任务参数也无效:
tasks.withType(Test) { jvmArgs += ["--add-opens", "java.base/java.net=ALL-UNNAMED"] jvmArgs += ["--add-opens", "java.base/java.util.concurrent=ALL-UNNAMED"] jvmArgs += ["--add-exports", "java.xml/jdk.xml.internal=ALL-UNNAMED"] }
解决方案
问题根源是Gradle版本与Jacoco插件的语法兼容性差异。较新的Gradle版本不再支持xml.enabled true这种简写语法,需要改为显式赋值:
修改jacocoTestReport中的报告配置部分,将enabled的写法改为enabled =:
jacocoTestReport { reports { xml.enabled = true // 修正语法 html.enabled = true // 修正语法 html.destination file("${buildDir}/reports/coverage") } afterEvaluate { def excludeSourceDirs = jacocoExcludePackage.split(',') getClassDirectories().setFrom(files(classDirectories.files.collect { def path =it.getPath() fileTree(dir: it).filter { def fileDir = it.getParent().replace(path+'/', '').replace('/', '.') def fileName = it.getName().replace('.class', '') if(!excludeSourceDirs.contains(fileDir) && !excludeSourceDirs.contains(fileDir+'.'+fileName)){ return it } } })) } }
修改后重新执行构建,即可正常生成测试报告,同时解决构建报错问题。
内容的提问来源于stack exchange,提问作者tmanral
相关产品推荐
相关产品推荐

