«Я пишу скрипт сборки, используя плагин net.foragerr.jmeter, версия 1.0.2-2.13.Как перехватить неудачи задачи Gradle?
В чем заключается моя задача: 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 поддерживал такие сценарии?
Это именно то, что мне было нужно. Благодаря! Я не знал о finalizedBy(). – DKroot