gpt4 book ai didi

gradle - 如何拦截Gradle任务的失败?

转载 作者:行者123 更新时间:2023-12-03 04:02:47 25 4
gpt4 key购买 nike

'我正在使用net.foragerr.jmeter插件1.0.2-2.13版编写构建脚本。

我的任务主要是1)运行插件JMeter任务,2)收集应用程序日志。

task perfTest(dependsOn: ['jmClean', 'jmRun'],
description:'Runs (cleanly) performance tests on a deployed application and collects the app log if available. ' +
'Use --no-daemon to see progress. Use --info to see all JMeter command-line arguments.') << {

if (logDir.isDirectory()) {
copy {
from "${logDir}"
into "${buildDir}/jmeter-report"
include 'iRePORT.log'
}
}
}

现在,即使 jmRun失败,我也需要收集日志。当我尝试为此实现解决方案时,我真的很困惑:
  • 我无法修改jmRun任务,因为它是一个插件任务
  • 我无法使用try/finally并直接执行其他任务,因为Gradle设计为不支持此操作,例如参见How do I wrap a gradle task in another task?
  • 我无法使用--continue标志gradle.startParameter.continueOnFailure = true,因为它不会继续执行依赖任务

  • 我想到的唯一可能的解决方法是分离日志收集,始终将其包含在命令行中,例如 perfTest collectLogs并在 gradle.startParameter.continueOnFailure = true中设置 perfTest

    这远非理想。

    有更好的解决方案吗? Gradle是否应该有一种方法来支持这样的方案?

    最佳答案

    您可以尝试创建这样的任务

    task collectPerfTestLogs(type: Copy) {
    from "${logDir}"
    into "${buildDir}/jmeter-report"
    include 'iRePORT.log'
    }

    然后有 perfTest.finalizedBy(collectPerfTestLogs)

    引用Gradle:

    Finalizer tasks will be executed even if the finalized task fails.



    参见 https://docs.gradle.org/current/userguide/more_about_tasks.html

    关于gradle - 如何拦截Gradle任务的失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34095853/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com