Я использую Jacoco в некоторых своих реализациях Gradle и решил улучшить его использование в мультипроектах.Применение Jacoco in Gradle Multiproject
Я создал структуру, подобную
parent-project
- model-project
- service-project
В моей build.gradle родитель проекта я определила:
allprojects {
apply plugin: 'jacoco'
//apply other plugins
repositories {...}
test.finalizedBy(project.tasks.jacocoTestReport)
jacocoTestReport {
reports {
csv.enabled false
html{
enabled true
destination "${buildDir}/reports/jacoco"
}
xml.enabled false
}
additionalSourceDirs = files(sourceSets.main.allJava.srcDirs)
}
//other configurations
buildscript {
repositories {
jcenter()
mavenCentral()
mavenLocal()
}
dependencies {
classpath 'org.ajoberstar:gradle-jacoco:0.2.0'
}
}
}
Когда я выполнил этот код все время я получил:
jacocoTestReport SKIPPED
Итак, я нашел this discussion, где я понял, что
jacocoRootReport не работает, если некоторые подпроекты не имеют каких-либо испытаний на всех, потому что это приводит к тому, onlyIf из JacocoReport ложной
Я попытался вставить следующий код в конце концов, однако, еще Безразлично» т работа
task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) {
dependsOn = subprojects.test
additionalSourceDirs = files(subprojects.sourceSets.main.allSource.srcDirs)
sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs)
classDirectories = files(subprojects.sourceSets.main.output)
executionData = files(subprojects.jacocoTestReport.executionData)
reports {
html.enabled = true
xml.enabled = true
csv.enabled = false
}
onlyIf = {
true
}
doFirst {
executionData = files(executionData.findAll {
it.exists()
})
}
}
Я также пытался создать тест в сервисе-проекте ... до сих пор не работает, а сообщение о пропуске остается
Как я могу решить эту проблему?