我想在多项目构建中聚合测试报告。我有一个项目结构,我已经禁用了一些测试。我已经查看了gradle sample code,它可以在默认设置下正常工作,但只要我在子项目上禁用测试任务就会停止工作。 (它查找显然不存在的testresult / * .bin文件。)
我的项目布局如下所示:
root
+--- ProjectA
| \--- ProjectA.gradle
+--- ProjectB
| \--- ProjectB.gradle
\--- build.gradle
ProjectA.gradle看起来像这样:
test {
enabled = false
}
rootprojects build.gradle有testReport任务。
正如我之前所说,ProjectA上的任务失败。我试着像这样修改示例代码:
task testReport(type: TestReport) {
destinationDir = file("$buildDir/reports/allTests")
reportOn subprojects*.test.findAll { test ->
test.getEnabled()
}
}
仍然不起作用,因为当任务执行时test.enabled为真。
如何使此任务有效?
答案 0 :(得分:0)
它查找显然不存在的testresult / * .bin文件
可能值得http://forums.gradle.org的错误报告。
仍然不起作用,因为当任务执行时test.enabled为真。
实际上false
任务执行时testReport
,但配置时true
testReport
。 (Gradle具有不同的配置和执行阶段。)这是因为默认情况下,在子项目构建脚本之前会对父项目构建脚本进行评估。解决此问题的一种方法是将evaluationDependsOnChildren()
任务的声明移到父构建脚本的底部,并在此之前添加{{1}}。