我不知道我是不是这样做,或者我是否必须以不同的方式处理内置的gradle任务,但我有一个我定义的测试任务
task testNGTests(type: Test) {
useTestNG()
}
我正试图在像这样的doFirst闭包中使用它
task taskA {
doFirst {
testNGTests.execute()
}
}
但由于某种原因它不起作用,我也尝试了
testNGTests.executeTests()
但这也不起作用。我是否有一种特殊的方法来处理内置的测试任务?
我使用的是gradle版本0.9.2
答案 0 :(得分:14)
从其他任务执行任务不是(并且从未被)正式支持。尝试使用任务依赖性,例如taskA.dependsOn(testNGTests)
。
答案 1 :(得分:6)
我找到了解决方法来做到这一点。在我的场景中,我有一个任务,读取用户输入,并根据他的anwser我需要创建具有不同配置的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()
}
}