2016-01-06 7 views
5

मैं प्रोजेक्ट मेकफ़ाइल को हटाना चाहता था और कुछ अच्छे ग्रेडल कार्यों को लिखना चाहता था। कस्टम कार्यों में एंड्रॉइड बिल्ड कार्यों का निष्पादन करें

  • बिल्ड
  • अपलोड
    1. स्वच्छ
    2. वृद्धि संस्करण # 1, # 3 और # 4 से कार्य हैं: मैं निम्न कार्य निष्पादित करने के लिए, की जरूरत है इस क्रम में एंड्रॉइड और प्लगइन (bintray) जबकि # 2 एक कस्टम कार्य है। के रूप में मुझे लगता है कि cleanbuild के बाद चलाया गया था

      task releaseMajor { 
          doLast { 
           clean.execute() 
           build.execute() 
           incrementVersion.execute() 
           bintrayUpload.execute() 
          } 
      } 
      

      रन क्रम इतना महान नहीं था: यहाँ क्या मैं अब तक है। और binrayUpload स्वाद के बिना चल रहा था (release)। मैंने सफलता के बिना dependsOn का उपयोग करने की कोशिश की है (आदेश काम नहीं कर रहा है)।

      मुझे ग्रैडल डॉक्टर में यह ठीक से कैसे किया जा सकता है। सही क्रम में निष्पादित करते समय, सीएलआई से, सब कुछ पूरी तरह से काम करता है।

    +0

    आपने 'dependOn' का उपयोग कैसे किया? – RaGe

    उत्तर

    2

    उपयोग mustRunAfter, या महीन आदेश नियंत्रण के लिए finalizedBy:

    task releaseMajor (dependsOn: ['clean', 'build', 'incrementVersion', 'bintrayUpload']) 
    build.mustRunAfter clean 
    incrementVersion.mustRunAfter build 
    bintrayUpload.mustRunAfter incrementVersion 
    
    +0

    ऐसा करने के लिए उदाहरण के लिए नहीं खेला जाएगा हर साफ के बाद निर्माण? –

    +0

    नं। अधिक जानकारी के लिए खंड 17.5 [यहां] (https://docs.gradle.org/current/userguide/more_about_tasks.html) देखें। – RaGe

    +0

    धन्यवाद, महान काम करता है। तो अगर मैं सही हूं, तो 'निर्भर करता है' वह कार्य है जो 'रिलीजमोजर' में चलाया जाएगा लेकिन ऑर्डर का सम्मान तब तक नहीं किया जाता जब तक कि इसे निर्दिष्ट नहीं किया जाता। और डॉक्टर के मुताबिक, रोज़ाना निष्पादन में 'बिल्ड' 'साफ 'के बाद नहीं चलाया जाएगा। मैंने दो बार दस्तावेज़ पढ़ा है और यह मेरे लिए बहुत स्पष्ट नहीं था। –

    0

    की कोशिश की इस

    task clean { 
        println 'clean task executing' 
    } 
    task incrementVersion (dependsOn:"clean"){ 
        println 'incrementVersion task executing' 
    } 
    task building (dependsOn:"incrementVersion"){ 
        println 'build task executing' 
    } 
    task bintrayUpload (dependsOn:"building") { 
        println 'bintrayUpload task executing' 
    } 
    

    उत्पादन था

    clean task executing 
    incrementVersion task executing 
    build task executing 
    bintrayUpload task executing 
    

    और मार डाला ./gradlew bintryUpload

    +0

    मैं एंड्रॉइड से 'क्लीन' या 'बिल्ड' नामक पहले से ही किया गया कार्य कर रहा हूं। मैं इसे फिर से परिभाषित कर सकता हूं। –

    +0

    चेनिंग 'निर्भर करता है' इस परिदृश्य में एक अच्छा समाधान नहीं है क्योंकि, यदि आप पहले श्रृंखला को कार्यों को ट्रिगर किए बिना, आप प्रत्येक व्यक्तिगत कार्य को नहीं चला सकते हैं। ओपी कार्य वास्तव में आम तौर पर स्वतंत्र कार्य होते हैं। – RaGe

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