'我正在使用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无法支持这样的方案吗?
答案 0 :(得分:1)
您可以尝试创建这样的任务
task collectPerfTestLogs(type: Copy) {
from "${logDir}"
into "${buildDir}/jmeter-report"
include 'iRePORT.log'
}
然后有perfTest.finalizedBy(collectPerfTestLogs)
。
引用Gradle:
即使最终任务失败,也会执行终结器任务。
请参阅https://docs.gradle.org/current/userguide/more_about_tasks.html