gradle - निर्भरता को फिर से लोड करने के लिए मैं धीरे-धीरे कैसे मजबूर कर सकता हूं?




(8)

अपने पूरे ग्रेडल कैश को हटाने के बजाय, यहां कुछ उत्तरों सुझाव दिए जा रहे हैं, आप किसी विशिष्ट समूह या आर्टिफैक्ट आईडी के लिए कैश हटा सकते हैं। मैंने निम्नलिखित फ़ंक्शन को मेरे .bash_profile जोड़ा:

deleteGradleCache() {
  local id=$1
  if [ -z "$id" ]; then
    echo "Please provide an group or artifact id to delete"
    return 1
  fi
  find ~/.gradle/caches/ -type d -name "$id" -prune -exec rm -rf "{}" \; -print
}

उपयोग:

$ deleteGradleCache com.android.support

फिर, अगले निर्माण पर या यदि आप resync, gradle निर्भरताओं को फिर से डाउनलोड करेगा।

रिपोजिटरी से निर्भरताओं को फिर से लोड करने के लिए मैं धीरे-धीरे कैसे कह सकता हूं?


आप निर्भरता को 'बदलते' के रूप में फ़्लैग करके बिल्ड स्क्रिप्ट में कुछ निर्भरताओं को दोबारा डाउनलोड करने के लिए ग्रैडल को बता सकते हैं। ग्रैडल हर 24 घंटों में अपडेट की जांच करेगा, लेकिन इसे संकल्प एसआरटीजीई डीएसएल का उपयोग करके कॉन्फ़िगर किया जा सकता है। मुझे इसे स्नैपशॉट या रात के निर्माण के लिए उपयोग करने में उपयोगी लगता है।

configurations.all {
    // Check for updates every build
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

विस्तारित:

dependencies {
    compile group: "group", name: "projectA", version: "1.1-SNAPSHOT", changing: true
}

संघनित:

compile('group:projectA:1.1-SNAPSHOT') { changing = true }

मुझे इस मंच धागे पर यह समाधान मिला।


इस निर्देशिका को हटाएं:

C:\Users\[username]\.gradle

कोई कैश्ड जार के साथ फ़ोल्डर को हटा सकता है।

मैक पर मेरे मामले में पुस्तकालय पथ पर कैश किया गया था

"/Users/MY_NAME/.gradle/caches/modules-2/files-2.1/cached-library-to-remove"

मैंने कैश किए गए लाइब्रेरी फ़ोल्डर को हटा दिया है (उपरोक्त उदाहरण में "कैश्ड-लाइब्रेरी-टू-डिलीट"), मेरे प्रोजेक्ट के बिल्ड फ़ोल्डर को हटा दिया और फिर संकलित किया। ताजा पुस्तकालय तब डाउनलोड किया गया था।


यदि आप ग्रैडल के हाल के संस्करण का उपयोग कर रहे हैं, तो आप - रीफ्रेश-निर्भरता विकल्प का उपयोग कर सकते हैं।

./gradlew build --refresh-dependencies

आप ग्रेडल मैनुअल का उल्लेख कर सकते हैं।

- रिफ्रेश-निर्भरता विकल्प हल किए गए मॉड्यूल और कलाकृतियों के लिए सभी कैश किए गए प्रविष्टियों को अनदेखा करने के लिए ग्रैडल को बताता है। डायनामिक संस्करणों के पुनर्मूल्यांकन, मॉड्यूल रीफ्रेश किए गए और कलाकृतियों को डाउनलोड किए गए सभी कॉन्फ़िगर किए गए रिपॉजिटरीज़ के विरुद्ध एक नया संकल्प किया जाएगा।

ग्रैडल मैनुअल


यह मेरे लिए काम किया। सुनिश्चित करें कि फ़ाइल> सेटिंग्स> ग्रैडल> ऑफ़लाइन कार्य पर अनचेकिंग बटन द्वारा ग्रैडल ऑफ़लाइन पर सेट नहीं है।

इसे अपने build.gradle के शीर्ष स्तर पर जोड़ें, निर्भरता से ऊपर होना अच्छा है

configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'

}

मैंने सुनिश्चित किया कि मेरी निर्भरता इस तरह लिखी गई है:

implementation('com.github.juanmendez:ThatDependency:ThatBranch-SNAPSHOT') {
    changing = true
}

उसके बाद, मैं एंड्रॉइड स्टूडियो में ग्रैडल पैनल खोलता हूं और नीले वृत्त तीर बटन पर क्लिक करता हूं। मैं हमेशा एक नई ताजा प्रति प्राप्त करने के अपने अपडेट देख सकते हैं।


विंडोज के लिए ... विशिष्ट निर्भरताओं को फिर से डाउनलोड करने के क्रम में:

  1. उन निर्भरताओं को हटाएं जिन्हें आप नीचे दी गई निर्देशिका से फिर से डाउनलोड करना चाहते हैं:

    C:\Users\[username]\.gradle\caches\modules-2\files-2.1
    
  2. पथ पर सभी मेटाडाटा निर्देशिका हटाएं:

    C:\Users\[username]\.gradle\caches\modules-2\metadata-*
    
  3. प्रोजेक्ट की रूट निर्देशिका में रन gradlew build gradle build (या gradlew build रैपर का उपयोग करते हुए gradlew build )।

नोट: उपरोक्त फ़ाइल पथों में संख्याएं आपके लिए अलग हो सकती हैं।


आम तौर पर, आप कमांड लाइन विकल्प - --refresh-dependencies साथ अपने कैश में निर्भरताओं को रीफ्रेश कर सकते हैं। आप ~/.gradle/caches अंतर्गत कैश की गई फ़ाइलों को भी हटा सकते हैं। अगले निर्माण के साथ ग्रैडल उन्हें फिर से डाउनलोड करने का प्रयास करेगा।

आपका विशिष्ट उपयोग केस क्या है? क्या आप गतिशील निर्भरता संस्करण या स्नैपशॉट संस्करणों का उपयोग करते हैं?

यूनिक्स सिस्टम पर, आप सभी मौजूदा कलाकृतियों (कलाकृतियों और मेटाडेटा) को हटा सकते हैं Gradle का उपयोग करके डाउनलोड किया गया है:

rm -rf $HOME/.gradle/caches/






gradle