【发布时间】:2018-12-18 10:17:35
【问题描述】:
Java 8 和 Gradle 4.6 在这里。我正在尝试将我的 Gradle 构建配置为使用 Jacoco Plugin,但遇到了一些困难。我已经让它与 Checkstyle 和 Findbugs 一起使用,这样运行 ./gradlew clean build 会调用 Checkstyle 和 Findbugs 任务,因为它们是 check 任务的依赖项。
我现在正试图让 Jacoco 工作:
- 它不包括我的
com.me.myapp.domain.model包及其所有内容;和 - 如果非排除类的代码覆盖率低于 70%,我的构建将失败;和
- 通过或失败,我想要
build/目录下生成的Jacoco报告的HTML版本;和 -
理想情况下我可以使用
./gradlew clean build的相同 Gradle 命令调用来让 Jacoco 像这样工作
迄今为止我最好的尝试:
plugins {
id 'java-library'
id 'checkstyle'
id 'findbugs'
id 'jacoco'
}
dependencies {
compile(
'org.hibernate:hibernate-core:5.0.12.Final'
,'com.fasterxml.jackson.core:jackson-core:2.8.10'
,'com.fasterxml.jackson.core:jackson-databind:2.8.10'
,'com.fasterxml.jackson.core:jackson-annotations:2.8.0'
)
testCompile(
'junit:junit:4.12'
)
}
repositories {
jcenter()
mavenCentral()
}
checkstyle {
config = rootProject.resources.text.fromFile('buildConfig/checkstyle/checkstyle.xml')
toolVersion = '8.11'
}
tasks.withType(FindBugs) {
reports {
xml.enabled false
html.enabled true
}
}
findbugs {
excludeFilter = file('buildConfig/findbugs/findbugs-exclude.xml')
}
jacocoTestReport {
reports {
xml.enabled false
csv.enabled false
html.enabled true
}
afterEvaluate {
classDirectories = files(classDirectories.files.collect {
fileTree(dir: it,
exclude: [
'com/me/myapp/domain/model/**'
]
)
})
}
}
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
minimum = 0.7
}
failOnViolation true
}
}
}
jacoco {
toolVersion = "0.8.1"
}
// to run coverage verification during the build (and fail when appropriate)
check.dependsOn jacocoTestCoverageVerification
当我运行./gradlew clean build 和上面的build.gradle (^^^) 如果我的覆盖率低于 70%,Jacoco 确实 会失败。 但是它不会为我生成任何 HTML 报告,这对于修复它根本没有帮助。
有什么想法吗?
【问题讨论】:
-
启用后是否会生成 CSV 或 XML 报告?
-
感谢@mascha (+1) 但否,当我启用 XML/CSV 报告时,
./gradlew clean build也不会生成它们。