【问题标题】:Gradle - run testReport task after test phase of all submodulesGradle - 在所有子模块的测试阶段之后运行 testReport 任务
【发布时间】:2016-07-28 02:23:02
【问题描述】:

我有一个简单的project with subprojects,我想在执行gradle test 命令时为所有测试生成汇总报告。

我已关注gradle documentation 并添加了以下内容:

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 testgradle build 时 - 任务 testReport 没有运行。

如何让gradle运行任务而不每次都指定?

【问题讨论】:

    标签: gradle


    【解决方案1】:

    将:test.finalizedBy 'testReport' 添加到您的 build.gradle;只是在根级别,不必在任何闭包内。

    taskX.finalizedBy taskY
    

    每次 taskX 成功完成执行时都会运行 taskY。

    【讨论】:

    • 您好,谢谢您的回答。您的解决方案给了我以下错误消息:'在根项目'gradle-test-aggregation'上找不到属性'test'
    • 我刚刚看了你的代码。任务test是java插件添加的,你只是将java插件应用到子项目中,所以gradle找不到任务test。您也可以将插件应用到您的根项目,或者将subprojects 部分设为allprojects,这样就可以了。
    • 我想我现在明白了。我不想在根项目中使用 java 插件(它会创建空 jar 等等)。有没有比在 root build.gradle 中手动定义“假”测试和构建任务更好的方法来实现我想要的? updated build.gradle
    猜你喜欢
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    相关资源
    最近更新 更多