2012-12-12 6 views
9
[WARNING] The POM for org.testng:testng:jar:5.14.10 is invalid, 
      transitive dependencies (if any) will not be available: 1 problem was 
      encountered while building the effective model for 
      org.testng:testng:5.14.10 

[FATAL] Non-readable POM 
      /home/teamcity/.m2/repository/org/sonatype/oss/oss-parent/3/oss-parent-3.pom: 
      input contained no data @ 
      /home/teamcity/.m2/repository/org/sonatype/oss/oss-parent/3/oss-parent-3.pom 

दूषित फ़ाइलें ~/.m2 में होती हैं, हर कोई इसके बारे में जानता है। इसे ठीक करना दूषित फ़ाइलों को हटाने के जितना आसान है, इसलिए मैवेन इसे फिर से लोड कर सकता है। हालांकि, मैं मैन्युअल रूप से लॉग को grep नहीं करना चाहता, बिल्ड एजेंट से कनेक्ट करना और उन फ़ाइलों को हाथ से हटा देना चाहता हूं। विश्वसनीय निर्माण ऐसी समस्याओं से निपटने में सक्षम होना चाहिए।क्या मेवेन 3 निर्माण में विफल होने की बजाय टूटी हुई फाइलों को फिर से लोड कर सकता है?

क्या मेवेन को निर्माण में विफल होने की बजाय दूषित फ़ाइलों को फिर से लोड करने का कोई तरीका है? प्रत्येक बिल्ड का प्रदर्शन करने से पहले मैं ~/.m2 को हटाना नहीं चाहता क्योंकि यह वास्तव में निर्माण को धीमा कर देगा।

ऐसा क्यों होता है? मेरे ग्राहक में से एक को टूटा बुनियादी ढांचा मिला है। बिना किसी सूचना के वर्चुअल मशीनों को अक्सर पुनरारंभ किया जा रहा है। और चूंकि निर्माण ज्यादातर समय किया जाता है, फाइलें उदास हो जाती हैं उदा। ~/.m2। इस मामले में मैं कुछ भी नहीं बदल सकता, यह उनके सर्वर है, और उनकी नीति - या सिर्फ अक्षमता है। लेकिन यह मैं हूं जो हाथों से निर्माण को ठीक करना है।

+0

द्वारा रोक दिया जाएगा अक्सर होता है? मेरे अभ्यास में, मुझे केवल यह कई बार करना पड़ा हालांकि मैं दैनिक आधार पर कई अलग-अलग परियोजनाओं पर मेवेन का उपयोग कर रहा हूं। –

+0

आप सही हैं, यह शायद ही कभी होता है। लेकिन विश्वसनीय निर्माण करना हमेशा बेहतर होता है ताकि आपको कभी भी बिल्ड एजेंटों को सीधे छूने की आवश्यकता न हो। – Nowaker

+0

अपने स्वयं के रिपोजिटरी मैनेजर को रखना बेहतर है और सुनिश्चित करें कि सभी कलाकृतियों (और उनकी पोम फाइलें) अच्छी गुणवत्ता में हैं, इसलिए यदि आप एक नई मशीन पर निर्माण लॉन्च करते हैं, तो आपको अपेक्षित परिणाम मिलेंगे। लेकिन आपके प्रश्न पर वापस, मुझे किसी भी प्लगइन से अवगत नहीं है जो ऐसा कर सकता है। –

उत्तर

3

मैवेन 3.0.4 तक मैवेन के एक आमंत्रण के साथ इसे हल करने का कोई तरीका नहीं है।

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

यह (उदाहरण के प्लगइन निर्भरता के लिए) हर मामले पकड़ नहीं होगा, लेकिन यदि आप

$ mvn org.mine.maven:resolve-all:resolve-all || rm -rvf ~/.m2/repository 
$ mvn clean verify 

की तरह कुछ किया था इसे और अधिक विश्वसनीय हो जाएगा।

आप Maven 3.x की आवश्यकता के लिए आप एक निर्माण विस्तार लिख सकता है और $MAVEN_HOME/lib में छोड़ और निर्माण विस्तार प्लगइन के रूप में एक ही चाल कर सकता है, लेकिन खुश हैं क्योंकि यह प्लगइन संकल्प से पहले खेलने में है, यह प्लगइन के साथ मामलों को पकड़ सकता है।

बहुत सारे काम, व्यक्तिगत रूप से एक अच्छा एमआरएम मूर्खतापूर्ण तेजी से redownlading बनाता है, और Maven का उपयोग करने के 8 वर्षों में शायद स्थानीय repo भ्रष्टाचार शायद 3-4 बार हो सकता है ... और उस समय सभी बार एक मैं था खेल में कई भंडार थे और मेटाडाटा (पोम) को एक रूप से हल किया गया था जबकि एक दूसरे से आर्टिफैक्ट ... केवल एक मामला "गलती से डाउनलोड किया गया HTML" था ... उन सभी को एमआरएम

+0

धन्यवाद। मुझे लगता है कि यह 'हल-सब || || आरएम-आरएफ' रास्ता काफी अच्छा है। या इसे 'हल-सब || के साथ सुधार किया जा सकता है purge-local-repository' क्योंकि यह उन कलाकृतियों को सहेज लेगा जिन्हें वर्तमान में निर्मित परियोजना में संदर्भित नहीं किया गया है। – Nowaker

+0

एफवाईआई: मैंने एक विवरण जोड़ा है कि दूषित फाइलें यहां कुछ आम क्यों हैं। – Nowaker

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