2012-01-23 13 views
11

मैं अगर मैं यह सही नहीं कर रहा हूँ पता नहीं है या मैं एक परीक्षण कार्य है कि मैं इसएक डूफर्स्ट/डूलास्ट क्लोजर में आप एक निर्मित ग्रेडल कार्य को कैसे निष्पादित करते हैं?

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

तरह परिभाषित किया गया है अगर मैं अलग तरह से निर्मित Gradle कार्यों को संभालने के लिए है, लेकिन और में इसका इस्तेमाल करने की कोशिश कर रहा हूँ इस

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

लेकिन यह किसी कारण के लिए काम नहीं करता है की तरह एक doFirst बंद, मैं भी

testNGTests.executeTests() 

की कोशिश की है, लेकिन है कि या तो काम नहीं किया। क्या कोई विशेष तरीका है कि मुझे निर्मित परीक्षण कार्य को संभालना है?

मैं Gradle संस्करण 0.9.2

+0

कार्य 'समर्थन नहीं करते पर अमल()' कॉल। केवल बंद (यानी विधि defs) करते हैं। –

उत्तर

14

उपयोग कर रहा हूँ किसी अन्य कार्य से कोई कार्य निष्पादित आधिकारिक तौर पर समर्थित नहीं है (और कभी नहीं था)। इसके बजाय कार्य निर्भरताओं का उपयोग करने का प्रयास करें, उदा। taskA.dependsOn(testNGTests)

+1

लेकिन अगर एकाधिक निर्भरताएं हैं तो ऑर्डर करने का समर्थन करने का कोई तरीका नहीं है, है ना? मैं इसके आसपास कैसे हो जाऊंगा? – AgentRegEdit

+0

कृपया एक ठोस उदाहरण दें। 'taskA.dependsOn (taskB, taskC)' taskA.dependsOn (taskB) के लिए shorthand है; taskA.dependsOn (taskC) '। लेकिन आप निश्चित रूप से 'taskA.dependsOn (taskB) कर सकते हैं; taskB.dependsOn (taskC) '। –

+0

इसलिए यदि मेरे पास 'taskA है (निर्भर करता है: taskB, taskC)' gradle taskC taskb और फिर taskA चलाएगा, लेकिन अगर मेरे पास 'taskA (dependOn: taskC, taskB) है, तो 'gradle अभी भी taskB, taskC के क्रम में चलता है , टास्कए, निर्भरताओं को क्रमबद्ध रूप से आदेश दिया जा रहा है जो थोड़ा अजीब लगता है – AgentRegEdit

6

मुझे ऐसा करने के लिए एक कामकाज मिला। मेरे परिदृश्य में मेरे पास एक ऐसा कार्य है जो उपयोगकर्ता इनपुट पढ़ता है और उसके anwser के आधार पर मुझे अलग-अलग कॉन्फ़िगरेशन के साथ एक ईएआर बनाने की आवश्यकता होती है। मैंने 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() 
    } 
} 
+0

निष्पादन से पहले आपको 'tasks.' को पूर्ववत करने की आवश्यकता क्यों है? –

संबंधित मुद्दे