gradle - gradle jacoco 插件不生成 exec 文件
问题描述
我已经完成了从 gradle 3.5 到 gradle 4.6 的 gradle 迁移。迁移 exec 文件停止生成后。“/build”文件夹不包含“jacoco”文件夹。如果我使用 --debug 运行 gradle 命令,它会在日志中写入:
[org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter] 跳过任务 ':common:jacocoTestReport' 作为任务 onlyIf 为假。
这是gradle脚本的一部分:
subprojects {
apply plugin: 'java'
apply plugin: 'jacoco'
apply plugin: 'idea'
...
jacocoTestReport {
reports {
xml.enabled true
csv.enabled false
}
afterEvaluate {
classDirectories = files(classDirectories.files.collect {
fileTree(dir: it,
exclude: ['**/dto/**', '**/endpoint/**','**/enpoints/**', '**/spring/**',
'**/servlet/**','**/handler/**', '**/jpa/**', '**/filter/**', '**/events/**', '**/dao/**',
'**/exception/**', '**/http/**', '**/jdbc/**', '**/bigquery/**', '**/enums/**',
'**/repository/**', '**/combination/**', '**/datastore/**', '**/cassandra/**',
'**/google/**', '**/exceptions/**', '**/logging/**', '**/JavaGeneratedContext.java', '**/Q*.java'])
})
}
}
test {
enabled = !skipTests
allJvmArgs = [
'-Dfile.encoding=utf-8'
]
useJUnit {
excludeCategories 'com.severn.common.test.IntegrationTest'
}
/*jacoco {
enabled = true
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
}*/
finalizedBy jacocoTestReport
}
...
}
解决方案
确保:
1) 在您的顶级 Gradle 文件 ( allprojects { ... }
) 中编译期间启用您的调试信息。有关更多信息,请参见此处:Jacoco 单元和集成测试覆盖率 - 个人和整体
tasks.withType(Compile) {
options.debug = true
options.compilerArgs = ["-g"]
}
2) 尝试从任务中删除整个 Jacoco 配置test
(如果在 jacocoTestReport 任务期望的默认位置生成 .exec 文件,请确保将其放置)。确保test
任务正在运行(并且不会以某种方式被排除)。出于测试目的(缩小此 .exec 未创建问题的范围),您可以强制jacocoTestReport
任务依赖于test
任务。
tasks.withType(Test) {enabled = true}
3) 有关 Java 单级/多级项目的 Jacoco 示例,请参阅最新的 Gradle 4.6 包 (tar/zip) 以获取提示。
PS:默认 JaCoCo 版本升级到0.8.0看看在jacoco
块内强制这个版本是否有帮助。
https://docs.gradle.org/4.6/release-notes.html JaCoCo 插件已升级为默认使用 JaCoCo 0.8.0 版。