Ответ 1
Выполнение задачи из другой задачи не поддерживается (и никогда не было) официально. Вместо этого попробуйте использовать зависимости задач. taskA.dependsOn(testNGTests)
.
Я не знаю, не буду ли я делать это правильно или мне придется обрабатывать встроенные gradle задачи по-разному, но у меня есть тестовая задача, которую я определил как
task testNGTests(type: Test) {
useTestNG()
}
и пытаюсь использовать его в doFirst закрытии, подобном этому
task taskA {
doFirst {
testNGTests.execute()
}
}
но по какой-то причине это не работает, я также пробовал
testNGTests.executeTests()
но это тоже не сработало. Есть ли особый способ обработки встроенной тестовой задачи?
Я использую gradle версию 0.9.2
Выполнение задачи из другой задачи не поддерживается (и никогда не было) официально. Вместо этого попробуйте использовать зависимости задач. taskA.dependsOn(testNGTests)
.
Я нашел обходное решение для этого. В моем сценарии у меня есть задача, которая читает пользовательский ввод, и в зависимости от его андерсера мне нужно создать EAR с разными конфигурациями. Я использовал задачу типа GradleBuild. Вот код:
task createEar() << {
def wichTypeOfEar = System.console().readLine("Which EAR?? (a, b)\n")
if(wichTypeOfEar == 'a'){
tasks.earA.execute()
}else{
tasks.earB.execute()
}
}
task earA(type: GradleBuild) {
doFirst{
// Here I can do some stuffs related to ear A
}
tasks = ['ear']
}
task earB(type: GradleBuild) {
doFirst{
// Here I can do some stuffs related to ear B
}
tasks = ['ear']
}
ear {
//Here is the common built in EAR task from 'ear' plugin
}
В этом случае вы можете сделать следующее:
task testNGTests(type: Test) {
useTestNG()
}
task testNGTestsWrapper(type: GradleBuild){
tasks = ['testNGTests']
}
task taskA {
doFirst {
testNGTestsWrapper.execute()
}
}