स्थानीय मावेन रिपॉजिटरी से जार फाइल कैसे निकालें जो कि इंस्टॉल के साथ जोड़ी गई थी: इंस्टॉल-फाइल?


122
mvn install:install-file -Dfile=phonegap-1.1.0.jar -DgroupId?=phonegap -DartifactId?=phonegap -Dversion=1.1.0 -Dpackaging=jar

मैं स्थानीय जार को स्थानीय रेपो में स्थापित करने के लिए ऊपर दिए गए कमांड का उपयोग करता हूं। अब मुझे मावेन रेपो से निर्भरता मिल गई है। मैं इसे स्थानीय रेपो से हटाना चाहता हूं। इसे कैसे साफ करें?


जवाबों:


107

हालांकि एक मावेन कमांड है जिसे आप ऐसा करने के लिए निष्पादित कर सकते हैं, केवल रिपॉजिटरी से मैन्युअल रूप से फ़ाइलों को हटाना आसान है।

विंडोज़ पर Documents and Settings\your username\.m2या $HOME/.m2लिनक्स पर इस तरह


10
मैं केवल हटाना होगा .m2/repository directory। एक सहकर्मी ने .m2 निर्देशिका को पहले हटा दिया है और यह समस्या का कारण बनता है क्योंकि हमारी परियोजना पर हमें settings.xmlफ़ाइल को संशोधित करना होगा ।
तिरिस

7
ध्यान दें कि .m2/repositoryनिर्देशिका को हटाने के साथ आप सभी मावेन प्लगइन फ़ाइलों को भी हटा देंगे। purge-local-repositoryकमांड का उपयोग करते समय आप केवल निर्भरता को हटा रहे हैं।
कोलिनहाइन्स

3
के तहत निर्देशिका संरचना .m2/repositoryमावेन समूह आईडी द्वारा आयोजित की जाती है, इसलिए आप केवल उस कलाकृतियों के लिए उपनिर्देशिका को हटा सकते हैं जिसे आप निकालना चाहते हैं।
केविन क्रुमविडे

124

हालाँकि मैन्युअल रूप से काम करने वाली फ़ाइलों को हटाना, आपकी परियोजना की निर्भरता को दूर करने का एक आधिकारिक तरीका है आपके स्थानीय (कैश) भंडार से आपकी है और वैकल्पिक रूप से दूरस्थ रिपॉजिटरी से उन्हें फिर से हल करना।

purge-local-repositoryमानक मावेन निर्भरता प्लगइन पर लक्ष्य , आपके कैश से इस परियोजना की स्थानीय रूप से स्थापित निर्भरता को हटा देगा । वैकल्पिक रूप से, आप उन्हें एक ही समय में दूरस्थ रिपॉजिटरी से फिर से हल कर सकते हैं।

यह एक परियोजना के चरण के हिस्से के रूप में उपयोग किया जाना चाहिए क्योंकि यह युक्त परियोजना के लिए निर्भरता पर लागू होता है। इसके अलावा, ट्रांसेटिटिव निर्भरता को डिफ़ॉल्ट रूप से (स्थानीय रूप से) शुद्ध किया जाएगा।

यदि आप स्पष्ट रूप से कैश से एक भी कलाकृतियों को निकालना चाहते हैं, purge-local-repositoryतो manualIncludeपैरामीटर के साथ उपयोग करें । उदाहरण के लिए, कमांड लाइन से:

mvn dependency:purge-local-repository -DmanualInclude="groupId:artifactId, ..."

प्रलेखन का तात्पर्य है कि यह डिफ़ॉल्ट रूप से सकर्मक निर्भरता को दूर नहीं करता है। यदि आप एक गैर-मानक कैश स्थान, या कई प्लेटफार्मों पर चल रहे हैं, तो ये "हाथ से" फ़ाइलों को हटाने से अधिक विश्वसनीय हैं।

पूरा प्रलेखन मावेन-निर्भरता-प्लगइन कल्पना में है।

नोट : मावेन dependencyप्लगइन के पुराने संस्करणों का एक manual-purge-local-repositoryलक्ष्य था, जो अब (संस्करण 2.8) के उपयोग से निहित है manualIncludemanualIncludes( sक) के लिए प्रलेखन को भी पढ़ा जाना चाहिए।


मुझे विश्वास नहीं है कि यह .jarएस के लिए काम करता है जो मावेन सेंट्रल या कुछ अन्य रिपॉजिटरी से डाउनलोड नहीं किया गया था। जब मैं इस कमांड को चलाता हूं तो यह सभी .jars से छुटकारा .jar[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:purge-local-repository (default-cli) on project alloy-generator: Failed to refresh project dependencies for: myartifact: required artifacts missing: [ERROR] manually-downloaded-and-installed.jar ...
दिलाता है

3
दरअसल, मैंने इसे जांचने के बाद महसूस किया कि यह स्थापना रद्द करता है .jar, लेकिन यह अभी भी एक त्रुटि उत्पन्न करता है। तो .jars के लिए जो मैन्युअल रूप से स्थापित किया गया है, मैं इस विधि का उपयोग करने के बजाय मैन्युअल रूप से हटाने की सिफारिश करूंगा, क्योंकि maven कुछ अजीब फाइलें बनाता है जैसे yourjar.jar.lastUpdatedऔर yourjar.pom.lastUpdatedजिन्हें आपको मैन्युअल रूप से किसी भी तरह से हटाने की आवश्यकता हो सकती है। लेकिन अगर मावेन सभी निर्भरताओं को स्वचालित रूप से प्रबंधित करता है, तो यह निर्भरता की स्थापना रद्द करने का एक शानदार तरीका है।
stiemannkj1

कमांड को चलाने के लिए इस दृष्टिकोण को एक मावेन परियोजना की भी आवश्यकता होती है। यदि आप स्थापित कमांड को चलाते हैं तो यह काम करने के लिए प्रकट नहीं होता है कि ओपी एक ग्रेड निर्माण के संदर्भ में निर्दिष्ट करता है।
jdonmoyer

19

कम से कम वर्तमान मावेन संस्करण पर आपको स्विच जोड़ने की आवश्यकता है -DreResolve = false यदि आप उन्हें फिर से डाउनलोड किए बिना अपने स्थानीय रेपो से निर्भरता को हटाने का इरादा रखते हैं।

mvn dependency:purge-local-repository -DreResolve=false

उन्हें फिर से डाउनलोड किए बिना निर्भरता को हटाता है।


क्या आप कृपया एक नज़र डाल सकते हैं: stackoverflow.com/questions/58937713/…
gstackoverflow

12

~/.m2/repository/phonegap/1.1.0/यदि आप एक Linux OS का उपयोग कर रहे हैं, तो अपनी स्थानीय निर्देशिका के अंतर्गत हर चीज़ (जार, pom.xml, आदि) को हटा दें ।


जब मैं इस तरह जार को हटाता हूं, तो यह पुराने फ़ोल्डर से जार को "री-डाउनलोड" करता है। हो सकता है कि ऐसे संदर्भ हों जिन्हें हटाने की आवश्यकता है।
एंटोनियो सेस्टो

0

मुझे एक ही समस्या का सामना करना पड़ा, ऊपर दिए गए सभी सुझावों के माध्यम से चला गया, लेकिन कुछ भी काम नहीं किया। अंत में मैंने .m2 और .ivy दोनों फोल्डर को डिलीट कर दिया और यह मेरे लिए काम कर गया।


-5
  1. cd ~/.m2
  2. git init
  3. git commit -am "some comments"
  4. cd /path/to/your/project
  5. mvn install
  6. cd ~/.m2
  7. git reset --hard

4
यह उत्तर समस्या को हल कर सकता है या नहीं भी कर सकता है, लेकिन आपके उत्तर में कुछ स्पष्टीकरण कैसे जोड़ा जाए, इससे ओपी को यह समझने में मदद मिल सकती है कि आप उसे क्या दिखाने की कोशिश कर रहे हैं।
गेरहार्ड

2
यह प्रतिक्रिया समस्या से संबंधित नहीं है: आप .m2 फ़ोल्डर में git रिपॉजिटरी का सेटअप दिखाते हैं और git रिपॉजिटरी के रूप में रीसेट करते हैं।
lquitadamo 10
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.