Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle-在所有子模块的测试阶段之后运行testReport任务_Gradle - Fatal编程技术网

Gradle-在所有子模块的测试阶段之后运行testReport任务

Gradle-在所有子模块的测试阶段之后运行testReport任务,gradle,Gradle,我有一个简单的示例,我希望在执行gradletest命令时为所有测试生成聚合报告 我遵循了这一原则,并补充了以下内容: task testReport(type: TestReport) { // make sure this task is run after all subproject test tasks mustRunAfter subprojects*.test destinationDir = file("$buildDir/reports/allTest

我有一个简单的示例,我希望在执行
gradletest
命令时为所有测试生成聚合报告

我遵循了这一原则,并补充了以下内容:

task testReport(type: TestReport) {
    // make sure this task is run after all subproject test tasks
    mustRunAfter subprojects*.test

    destinationDir = file("$buildDir/reports/allTests")
    // Include the results from the `test` task in all subprojects
    reportOn subprojects*.test
}
当我在根项目中执行
gradle test testReport
时,这会起作用,但当我执行
gradle test
gradle build
时,任务
testReport
不会运行


如何使gradle在不每次指定任务的情况下运行该任务?

将:
test.finalized by'testReport'
添加到build.gradle;就在根级别,不必在任何闭包中

taskX.finalizedBy taskY

将在每次taskX成功完成执行时运行taskY。

您好,谢谢您的回答。您的解决方案给了我以下错误消息:“在根项目“gradle-test-aggregation”上找不到属性“test”,我刚刚查看了您的代码。任务
test
是由java插件添加的,您只将java插件应用于子项目,因此gradle无法找到任务
test
。你也可以将插件应用到你的根项目,或者让
子项目
部分
allprojects
起作用。我想我现在明白了。我不想在根项目中使用java插件(它会创建空jar等等)。有没有比在root build.gradle中手动定义“假”测试和生成任务更好的方法来实现我想要的?