मावेन स्थानीय कलाकृतियों को खोजने में विफल रहता है


107

कभी-कभी मावेन की शिकायत होती है कि एक विशेष निर्भरता, जिसे स्थानीय रूप से बनाया और पैक किया गया है, एक अन्य परियोजना का निर्माण करते समय स्थानीय भंडार में नहीं पाया जा सकता है जो कि एक निर्भरता के रूप में है। हमें एक त्रुटि मिलती है जैसे:

प्रोजेक्ट X पर लक्ष्य को निष्पादित करने में विफल: प्रोजेक्ट X के लिए निर्भरता को हल नहीं कर सका: Y को खोजने में विफलता [आर्काइव रिपॉजिटरी] में स्थानीय रिपॉजिटरी में कैश की गई थी, रिज़ॉल्यूशन को तब तक रीटेम्प्ट नहीं किया जाएगा जब तक कि आंतरिक के अपडेट अंतराल को समाप्त नहीं किया जाता है या अपडेट को मजबूर किया जाता है - >

जहां एक्स परियोजना का निर्माण किया जा रहा है, और वाई कथित रूप से लापता कलाकृति है। यदि आप स्थानीय रिपॉजिटरी में देखते हैं, तो कलाकृतियां हैं। यह आर्टवर्क हमारे आर्काइव रिपॉजिटरी में कभी स्थापित नहीं होता है, इसलिए समस्या पूरी तरह से स्थानीय रिपॉजिटरी में आधारित है।

हमने सेटिंग में कई प्रोफाइल की कोशिश की है। xml, और निश्चित रूप से "mvn -U"। न तो कोई अच्छा काम करता है, न ही करना चाहिए क्योंकि यह कलाकृतियां स्थानीय भंडार से आगे कभी नहीं जाती हैं।

काम करने के लिए लगने वाली केवल दो चीजें बहुत लंबे समय तक इंतजार करती हैं जब तक कि मावेन स्मार्ट नहीं हो जाता है, या स्थानीय रिपॉजिटरी को पूरी तरह से हटाने के लिए। संभवतः प्रतीक्षा विकल्प उपरोक्त अद्यतन अंतराल से संबंधित है।

हमने मावेन 3.0.2 और 3.0.3 के साथ इस समस्या का अनुभव किया है। हम Archiva 1.0.3 का उपयोग कर रहे हैं (लेकिन फिर से यह एक कारक नहीं होना चाहिए)। किसी भी तरह की सहायता का स्वागत किया जाएगा।


1
मावेन "प्रतीक्षा के दौरान" या उससे पहले कुछ भी लॉग कर रहा है? यानी यह एक अगम्य भंडार से जुड़ने का प्रयास है? इसके अलावा, समस्याग्रस्त कलाकृतियों "-SAPAPOT" हैं?
नूह

ऊपर बताई गई त्रुटि के अलावा मैवेन कुछ भी लॉग नहीं करता है। और हाँ यह एक स्नैपशॉट निर्भरता है।
user1686620


1
क्या आपने दूसरी परियोजना बनाने की कोशिश करने से पहले बिल्ड पैकेज स्थापित किया है?
खमरबाईज

3
मुझे पसंद है कि कैसे त्रुटि संदेश एक रन-ऑन है, न कि एक व्याकरणिक रूप से सही वाक्य। इस तरह, हम यह सुनिश्चित करने के लिए नहीं जानते हैं कि क्या यह वाई नहीं मिल सकता है या यदि वाई को स्थानीय रूप से कैश किया गया है, या दोनों। वैसे भी, मैं एक ऐसी ही समस्या है। मैं यू के विकल्प के साथ इसे सुलझाने के लिए क्योंकि मेरी निर्भरता में सक्षम था कर रहे हैं अपनी कंपनी की आंतरिक रेपो में। आपको अपनी कंपनी के आंतरिक भंडार में तैनात कलाकृतियों की आवश्यकता क्यों नहीं है?
ज्योंगदेव

जवाबों:


77

स्थानीय मावेन रेपो ट्रैक जहां कलाकृतियों को मूल रूप से विरूपण साक्ष्य निर्देशिका में "_maven.repositories" नामक एक फ़ाइल का उपयोग करके आया था। इसे हटाने के बाद, बिल्ड ने काम किया। इस जवाब ने मेरे लिए समस्या तय कर दी।


26
मेरे लिए यह "_remote.repositories" नाम की एक फ़ाइल थी। मैंने इसे हटा दिया और यह काम कर गया! ट्रिक्स के लिए धन्यवाद!
पेरबेलिनियो

2
Thx फ़ाइल का नाम _remote.repositories भी मौजूद था। यह मेरे साथ तब हुआ जब हमारे सांठगांठ ने नेटवर्क कनेक्शन बंद कर दिया, इसलिए यह निर्भरताएं प्राप्त नहीं कर
सका

1
प्रदान किया गया समाधान काम करता है। हालाँकि, मुझे इसमें दिलचस्पी है कि यह समस्या आखिर क्यों होती है। क्या कोई मुझे त्वरित स्पष्टीकरण दे सकता है? क्या मुझे कुछ अलग करना है?
जोथन

यदि आप इस मूल जांच को एक बार (मेटाफ़ाइल्स को हटाए बिना) बायपास करना चाहते हैं, aether.enhancedLocalRepository.trackingFilename=some_dummy_file_nameतो निर्भरता रिज़ॉल्यूशन प्रक्रिया को पास करने का प्रयास करें ; सबसे आसान तरीका है -D सिस्टम प्रॉपर्टी को इनवोकेशन कमांड में जोड़ना।
जनक बंडारा

@ जानोथन आईएमओ जवाब में लिंक एक बहुत अच्छी व्याख्या प्रदान करता है :)
जनक बंडारा

40

जैसा कि यहां विकल्प मेरे लिए काम नहीं कर रहे थे, मैं साझा कर रहा हूं कि मैंने इसे कैसे हल किया:

मेरी परियोजना की एक मूल परियोजना है (अपने स्वयं के pom.xml के साथ) जिसमें कई बच्चे मॉड्यूल हैं, जिनमें से एक (ए) का दूसरे बच्चे (बी) पर निर्भरता है। जब मैंने mvn packageए में कोशिश की , तो यह काम नहीं किया क्योंकि बी हल नहीं किया जा सका।

mvn install मूल निर्देशिका में निष्पादन ने काम किया। उसके बाद, मैं mvn packageए के अंदर कर सकता था और उसके बाद ही बी मिल सकता था।


3
धन्यवाद! यह मुझे पागल कर रहा था। mvan क्लीन पैकेज jboss-as: तैनाती तब काम कर रही थी जब मुझे एक ही लाइन पर निष्पादित किया गया था, लेकिन जब मैंने उन्हें अलग से नहीं किया था।
PMorganCA

18

ऑफ़लाइन मोड में भी, मावेन रिमोट रिपॉजिटरी की जाँच करेगा यदि वहाँ निर्भरता के लिए एक _remote.repositories मार्कर है। यदि आपको ऑफ़लाइन मोड में काम करने की आवश्यकता है, तो आपको इन फ़ाइलों को हटाने की आवश्यकता हो सकती है।

नीचे दी गई सरल शेल कमांड इन मार्कर फ़ाइलों को हटा देती है। यह करना सुरक्षित है यदि आप केवल मशीन के लिए ऑफ़लाइन मोड का उपयोग करते हैं। मैं ऐसा किसी मशीन पर नहीं करूँगा, जिसे वेब से फ़ाइलों को नीचे खींचने की आवश्यकता हो।

मैंने वेब से डिस्कनेक्ट किए गए बिल्ड सर्वर पर इस रणनीति का उपयोग किया है। हमें रिपॉजिटरी को इसे स्थानांतरित करना होगा, मार्कर फ़ाइलों को हटाना होगा और फिर ऑफ़लाइन मोड में चलाना होगा।

लिनक्स / यूनिक्स पर आप दूरस्थ रिपॉजिटरी मार्कर फ़ाइलों को इस तरह से हटा सकते हैं:

cd ~/.m2
find . -name "_remote.repositories" -type f -delete

1
इस समाधान ने मेरे लिए काम किया, एक निर्भरता के लिए मैंने दूसरे कंप्यूटर से कॉपी किया जो केंद्रीय भंडार में उपलब्ध नहीं है। कमान हालांकि कुछ पात्रों को याद करती है। यहाँ पूर्ण कमांड है: ढूँढें। -नाम "_remote.repositories" -ype -f
-delete

2
या, हटाने के बजाय, आपको प्रक्रिया को _remote.repositoriesपारित करके फाइल को न देखने के लिए मावेन को "गुमराह" करने में सक्षम होना चाहिए -Daether.enhancedLocalRepository.trackingFilename=some_dummy_file_name। (एक वास्तविक मावेन बिल्ड पर कोशिश नहीं की, लेकिन काम करता है जब मावेन को प्रोग्रामिक रूप से लागू करता है; इसलिए पूर्व को भी काम करना चाहिए)
जनक बंडारा

1
मैंने यह पाया और विशिष्ट निर्भरता (जार) को हटाना, मावेन को नहीं मिला, क्योंकि वे (<10) सूचीबद्ध और प्रबंधनीय थे। यह एक गलत नेक्सस के कारण था जो वर्तमान में उपलब्ध नहीं एक दूरस्थ नेक्सस की ओर इशारा करता है (जैसा कि मुझे समझ में आया ..)। तो विलोपन के लिए सभी रेपो को स्वीप करने की कोई वास्तविक आवश्यकता नहीं है। वैसे भी इस समाधान ने दिन बचा लिया। यह मेरे लिए काम करता है।
डिएगो 1974

9

जब मेरे साथ ऐसा हुआ था, तो ऐसा इसलिए हुआ क्योंकि मैंने अपनी सेटिंग में आंख मूंदकर कॉपी किया था। एक टेम्प्लेट से xml और यह अभी भी खाली <localRepository/>तत्व था। इसका मतलब यह है कि निर्भरता को हल करते समय कोई स्थानीय रिपॉजिटरी का उपयोग नहीं किया जाता है (हालांकि आपकी स्थापित कलाकृतियों को अभी भी डिफ़ॉल्ट स्थान पर रखा जाता है)। जब मैंने इसे बदल दिया तो इसके साथ <localRepository>${user.home}\.m2\repository</localRepository>काम करना शुरू कर दिया।

* निक्स के लिए, यह होगा <localRepository>${user.home}/.m2/repository</localRepository>, मुझे लगता है।


6
$ {user.home} \। m2 \ रिपॉजिटरी डिफ़ॉल्ट है इसलिए खाली टैग को हटाने से समान रूप से काम करना चाहिए।
लुइस मुअनोज़

9

मावेन को याद है जब उसे कुछ नहीं मिला। कुंजी है "रिज़ॉल्यूशन को तब तक reattempted नहीं किया जाएगा जब तक कि आंतरिक का अद्यतन अंतराल समाप्त न हो जाए या अपडेट न हो जाए ->"

त्वरित समाधान समस्या विरूपण साक्ष्य के लिए अपने स्थानीय "रिपॉजिटरी" उपनिर्देशिका को हटाना है - यह मानते हुए कि आपने इसके साथ समस्या को ठीक कर लिया है। :)

mvn -U दूरस्थ रिपॉजिटरी से अपडेट को बल देगा - फिर से, मान लें कि आपने अब दूरस्थ को पॉपुलर कहा है।


2

सबको पकड़ो। जब यहां बताए गए समाधान काम नहीं करते (मेरे मामले में खुश होते हैं), बस '.m2' फ़ोल्डर / निर्देशिका से सभी सामग्री हटा दें, और करें mvn clean install


2

यदि आपने <repositories/>अपने pom.xml में स्पष्ट रूप से परिभाषित किया है तो आपके स्थानीय भंडार को अनदेखा कर दिया जाता है।


1

यहां तक ​​कि मैंने इस मुद्दे का सामना किया और इसे 2 तरीकों से हल किया:

1) अपने IDE प्रोजेक्ट का चयन करें और सभी प्रोजेक्ट्स को साफ़ करें और फिर प्रोजेक्ट पर राइट क्लिक करके सभी मावेन निर्भरताएँ स्थापित करें -> maven पर जाएँ और प्रोजेक्ट निर्भरता अपडेट करें एक ही इंस्टाल करने के लिए सभी प्रोजेक्ट्स का चयन करें। एक बार यह विशेष परियोजना चलाने के बाद किया जाता है

2) क्या आप जो कर सकते हैं वह pom.xml में उन आश्रितों के लिए जांचना है जिनके लिए आपको त्रुटि हो रही है और उन आश्रित परियोजना को "mvan क्लीन इंस्टॉल" करें और वर्तमान परियोजना की मावेन निर्भरताएं स्थापित करें जिसमें आप समस्या का सामना कर रहे हैं। इसके द्वारा स्थानीय परियोजना की निर्भरता का निर्माण किया जाएगा और जार बनाए जाएंगे।


0

मैं इसी तरह की समस्या के लिए दौड़ता हूं, जब मेरी नई परियोजना oracle jdbc jar (जो मैंने अपने स्थानीय भंडार में स्थापित की है और अन्य परियोजनाओं के लिए अच्छी तरह से काम करती है) पर निर्भर है। मैंने -U विकल्प की कोशिश की, .lastupdate फ़ाइल या संपूर्ण निर्देशिका को हटा दिया और फिर से डाउनलैड किया, लेकिन यह काम नहीं किया। अंत में, मैंने निर्देशिका को हटा दिया और इसे स्थानीय रूप से फिर से स्थापित किया, यह काम करता है।


0

मावेन के आसपास मुझे मिली त्रुटियों में से एक यह है कि जब मैंने अपनी सेटिंग की। xml फ़ाइल को गलत निर्देशिका में रखा। यह आपके उपयोगकर्ता होम dir के तहत .m2 फ़ोल्डर में होना चाहिए। यह सुनिश्चित करने के लिए जांचें कि यह सही जगह पर है (सेटिंग्स-सुरक्षा के साथ। xml यदि आप उस का उपयोग कर रहे हैं)।


0

DependencyResolutionExceptionजब मैंने शेल स्क्रिप्ट के माध्यम से स्थानीय कलाकृतियों को स्थापित किया था , तो उबंटू लिनक्स में मेरे पास था । समाधान स्थानीय कलाकृतियों को हटाने और उन्हें फिर से "मैन्युअल रूप से" स्थापित करने के लिए था - mvn install:install-fileटर्मिनल के माध्यम से कॉल करना ।


0

यह हुआ क्योंकि मैं इस के httpबजाय था https:

<repository>
    <id>jcenter</id>
    <name>jcenter-bintray</name>
    <url>https://jcenter.bintray.com</url>
</repository>

0

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


-1

मेरे पास एक अलग कारण से एक ही त्रुटि थी: मैंने अपना "अच्छा अभ्यास" निर्भरता वाला एक स्टार्टर पीओएम बनाया था, और इसे परीक्षण करने के लिए स्थानीय रूप से बनाया और स्थापित किया था। मैं इसे रेपो में "देख" सकता था, लेकिन इसका उपयोग करने वाले एक प्रोजेक्ट को उपरोक्त त्रुटि मिली। मैंने जो किया वह स्टार्टर POM को पोम करने के लिए सेट किया गया था, इसलिए कोई JAR नहीं था। मावेन काफी सही था कि यह नेक्सस में नहीं था - लेकिन मैं यह होने की उम्मीद नहीं कर रहा था, इसलिए त्रुटि थी, उम्म, बेवजह। स्टार्टर पीओएम को सामान्य पैकेजिंग में बदलने और पुनर्स्थापना ने समस्या को ठीक कर दिया है।


यह उत्तर शायद टिप्पणी के रूप में बेहतर होगा, क्योंकि यह प्रश्न का सीधा उत्तर नहीं है।
00prometheus
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.