【发布时间】:2019-06-22 00:34:00
【问题描述】:
我有一个结构如下的多模块android项目:
:a
:b
:c
:d
:e
我正在尝试在模块 :b 上运行 jacoco 报告,以便它在 :b、:c、:d 和 :e 上运行而不运行 :a。我希望所有的 xml 报告都放在一个带有 project.xml 名称的公共文件夹中(例如 b.xml、c.xml 等)我有一个非常标准的 jacoco 设置
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) {
reports {
xml.enabled = true
xml.destination = file(allTestCoverageDir + project.name + ".xml")
html.enabled = true
}
def fileFilter = [
'**/R.class',
'**/R$*.class',
'**/BuildConfig.*',
'**/Manifest*.*',
'**/*Test*.*',
'android/**/*.*',
//Dagger 2
'**/*Dagger*Component*.*',
'**/*Module.*',
'**/*Module$*.*',
'**/*MembersInjector*.*',
'**/*_Factory*.*',
'**/*Provide*Factory*.*',
]
def kotlinDebug = [fileTree(dir: "${project.buildDir}/tmp/kotlin-classes/debug", excludes: fileFilter)]
def mainSrc = files([
"$project.projectDir/src/main/java",
"$project.projectDir/src/main/kotlin"
])
sourceDirectories = files([mainSrc])
classDirectories = files(kotlinDebug)
executionData = fileTree(dir: project.buildDir, includes: [
'jacoco/testDebugUnitTest.exec', 'outputs/code-coverage/connected/*coverage.ec'
])
}
但是当我尝试遍历 doLast 块中的子项目时,doLast 块永远不会运行,并且在此之前尝试访问子项目也表明 :a 没有子项目。
编辑我可以使用 ./gradlew b:jacocoTestReport 或 ./gradlew c:jacocoTestReport 以及所有报告以及具有正确名称的文件夹中的每个子项目运行这些。但是随着我的项目的增长,我不想运行几十个命令(每个模块一个)我想要一个命令 ./gradlew b:jacocoTestReport (或类似的东西),它为 b 运行,它是子树
【问题讨论】:
标签: android gradle kotlin android-gradle-plugin