2013-05-03 19 views
6

में फोर्स टास्क निष्पादन मैंने लिखा कुछ ग्रिडल कार्यों की एक निश्चित राशि, किसी भी आउटपुट या आउटपुट की आवश्यकता नहीं है। इसके कारण, जब मैं उन्हें कॉल करता हूं, तो इन कार्यों को हमेशा स्थिति UP-TO-DATE प्राप्त होती है। एक उदाहरण:ग्रैडल

task backupFile(type: Copy) << { 
    //Both parameters are read from the gradle.properties file 
    from file(adjusting_file.replaceAll("\"", "")) 
    into file(backupDestinationDirectory + "/main/") 

    println "[INFO] Main file backed up" 
} 

निम्नलिखित में से कौन उत्पादन में परिणाम है: बल एक (NY) निष्पादित करने के लिए कार्य करने के लिए एक तरह से

:gradle backupFile 
:backupFile UP-TO-DATE 

वहाँ है, कुछ भी की परवाह किए बिना? यदि वहां है, तो टॉगल कार्य निष्पादन (उदाहरण के लिए बिल्ड स्क्रिप्ट को बताएं जो कार्य करने के लिए कार्य करता है और कौन से कार्यों को अनदेखा करना है)?

मैं << टैग को छोड़ नहीं सकता, क्योंकि यह कार्य हमेशा निष्पादित करेगा, जो मेरी इच्छा नहीं है।

आपके इनपुट के लिए अग्रिम धन्यवाद।

+0

_I << टैग छोड़ नहीं कर सकते, कि के रूप में कार्य करने के लिए होगा हमेशा execute_ => यह सही नहीं है, मैं आप कहते हैं कि यकीन है कि क्योंकि आपके println बयान अपने निर्माण पर हर अपने आह्वान Gradle से पता चलता फ़ाइल। लंबी कहानी छोटी है, '>>' का उपयोग आपके कार्य के लिए ** ** ** को परिभाषित करने के लिए किया जाता है, इसलिए println इस क्रिया का हिस्सा होगा और केवल कार्य को निष्पादित होने पर दिखाएगा। '>>' के बिना आप एक कार्य को परिभाषित करते हैं ** कॉन्फ़िगरेशन ** इसलिए आपका प्रिंटल प्रत्येक बार दिखाएगा, लेकिन इसका मतलब यह नहीं है कि कार्य निष्पादित कर दिया गया है, लेकिन केवल यह _configured_ है। – Attila

उत्तर

9

कार्य कॉन्फ़िगरेशन चरण में कॉन्फ़िगर किया जाना है। हालांकि, आप इसे कार्य क्रिया (<< { ... }) में कॉन्फ़िगर कर रहे हैं, जो निष्पादन चरण में चलता है। चूंकि आप कार्य को बहुत देर से कॉन्फ़िगर कर रहे हैं, ग्रैडल निर्धारित करता है कि उसके पास कुछ भी करने के लिए कुछ नहीं है और UP-TO-DATE प्रिंट करता है।

नीचे एक सही समाधान है। दोबारा, मैं << के बजाय doLast का उपयोग करने की अनुशंसा करता हूं क्योंकि यह अधिक नियमित वाक्यविन्यास की ओर जाता है और गलती से जोड़ा/छोड़ दिया जाता है।

task backupFile(type: Copy) { 
    from file(adjusting_file.replaceAll("\"", "")) 
    into file(backupDestinationDirectory + "/main/") 
    doLast { 
     println "[INFO] Main file backed up" 
    } 
}  
+0

क्या यह कार्य * हमेशा * निष्पादित नहीं करता है? –

+0

नहीं, ऐसा नहीं है। मैं थोड़ा सा कदम उठाने की सलाह देता हूं, [ग्रैडल उपयोगकर्ता मार्गदर्शिका] के पहले कुछ अध्यायों का अध्ययन करें (http://gradle.org/docs/current/userguide/userguide_single.html), और पूर्ण ग्रैडल वितरण में नमूने के साथ प्रयोग करें । –

0

मैं कई दिनों से ऐसा करने की कोशिश कर रहा हूं। मुझे प्रक्रिया संसाधन चरण पर कई इंटरमीडिएट जार बनाना है। प्रक्रिया को संसाधन चरण पर बनाने की आवश्यकता है।

processResources.dependsOn(packageOxygenApplet) //doesn't work 

task packageOxygenApplet (type: Jar) { 

    println '** Generating JAR..: ' + rsuiteOxygenAppletJarName 
     from(sourceSets.main.output) { 
      include "org/worldbank/rsuite/oxygen/**" 
     } 
     baseName = rsuiteOxygenAppletJarName 

     manifest { 
      attributes("Build-By": oxygenUsername, 
       "Specification-Title": "Oxygen World Bank Plugin") 
     } 
     destinationDir = file("src/main/resources/WebContent/oxygen") 

}