2012-01-23 12 views
11

doğru yaptığımdan olsam bilmiyorum veya i farklı yerleşik gradle görevlerini yerine getirmek için var ama eğer ben buDoFirst/doLast kapamasında yerleşik bir görev görevini nasıl yürütüyorsunuz?

task testNGTests(type: Test) { 
    useTestNG() 
} 

gibi tanımlanmış bir test görev var ve bunu kullanmaya çalışıyorum Bu

task taskA { 
    doFirst { 
     testNGTests.execute() 
    } 
} 

ama nedense çalışmıyor gibi doFirst kapatma, ben de

testNGTests.executeTests() 

denedi ama bu da işe yaramadı. Yerleşik test görevini üstlenmem için özel bir yol var mı?

ben başka bir görev bir görevi yürütme gradle sürüm 0.9.2

+0

Görevler() 'çağrıları yürütmek' desteklemez. Sadece kapaklar (yani metot defs) yapar. –

cevap

14

kullanıyorum resmen desteklenen (ve asla) değildir. Görev bağımlılarını kullanmayı deneyin, ör. taskA.dependsOn(testNGTests).

+1

Ancak, birden fazla bağımlılık varsa siparişi desteklemenin bir yolu yok, değil mi? Bunu nasıl halledebilirim? – AgentRegEdit

+0

Lütfen somut bir örnek verin. taskA.dependsOn (taskB, taskC) 'taskA.dependsOn (taskB) için kısa yoldur; taskA.dependsOn (taskC) '. Ama elbette ki 'taskA.dependsOn'u (taskB) yapabilirsin; taskB.dependsOn (taskC) '. –

+0

eğer bir 'taskA (dependsOn: taskB, taskC) varsa, gradle taskC görevB'yi ve sonra taskA'yı çalıştırır, ancak eğer' taskA (dependsOn: taskC, taskB ') varsa, gradle yine de taskB, taskC sırasına göre çalışır , taskA, bağımlılıklar alfabetik olarak sıralanıyor görünüyor ki bu biraz garip görünüyor – AgentRegEdit

6

Bunu yapmak için bir çözüm buldum. Benim senaryoda, bir kullanıcı girdisini okuyan ve anwinkine bağlı bir görevim var. Farklı konfigürasyonlara sahip bir EAR oluşturmam gerekiyor. GradleBuild tipi bir görev kullandım. İşte kod: Aşağıdaki yapabileceğini

Sende
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 
} 

durum:

task testNGTests(type: Test) { 
    useTestNG()  
} 

task testNGTestsWrapper(type: GradleBuild){ 
    tasks = ['testNGTests'] 
} 

task taskA { 
    doFirst { 
    testNGTestsWrapper.execute() 
    } 
} 
+0

Neden yürütülmeden önce 'task.' başlatacaksınız? –