2009-07-22 13 views
28

मैं अपाचे Maven के साथ अपने प्रोजेक्ट के निर्माण और एक कस्टम भंडार कॉन्फ़िगर किया लेकिन जब यह भंडार यह सिर्फनिर्भरताओं को डाउनलोड करते समय पहले समय-समय पर मेवेन कैसे प्राप्त करें?

डाउनलोड कर रहा है के साथ एक बहुत लंबे समय के लिए लटक हिट कर रहा हूँ: कुछ ही मिनटों के बाद http://maven.mycompany.com/m2/org/springframework/spring/2.5.6/spring-2.5.6.pom

यह जाता है और डाउनलोड यह केंद्रीय रेपो

डाउनलोडिंग से: http://repo1.maven.org/maven2/org/springframework/spring/2.5.6/spring-2.5.6.pom 12K डाउनलोड किया गया (वसंत-2.5.6.pom)

मैं टाइमआउट है कि तुलना में बहुत जल्दी होना चाहता हूँ। यह मैवेन के सभी नए संस्करणों के साथ होता है। संस्करण 2.0.6 या इससे पहले की समस्या नहीं थी, यह समय-समय पर बहुत तेज़ होगा।

+0

ऐसा लगता है कि http://www.jroller.com/mrdon/entry/making_maven_2_not_suck इस पर कुछ प्रयास किए गए हैं, लेकिन मुझे इसका उपयोग कैसे नहीं किया जा सकता है। – rado

उत्तर

21

2.1 से पहले मेवेन के संस्करणों में, क्लाइंट को टाइमआउट पर कॉन्फ़िगर करने का कोई मतलब नहीं है, लेकिन यदि आप अद्यतन नीति सेट करते हैं तो आप इसे अद्यतनों की जांच के लिए कॉन्फ़िगर कर सकते हैं। यह आंशिक रूप से समस्या को संबोधित करता है।

उदाहरण के लिए:

<repository> 
    <id>myrepo</id> 
    <url>http://maven.mycompany.com/m2</url> 
    <releases> 
    <enabled>true</enabled> 
    <updatePolicy>daily</updatePolicy> 
    </releases> 
    <snapshots> 
    <enabled>false</enabled> 
    <updatePolicy>always</updatePolicy> 
    </snapshots> 
</repository> 

मान्य मान हैं:

  • हमेशा - हमेशा की जाँच जब Maven कभी नहीं स्नैपशॉट
  • के नए संस्करणों के लिए शुरू कर दिया है - कभी नहीं नए दूरस्थ संस्करणों के लिए जाँच करें। मैन्युअल अपडेट बंद हो जाने के बाद।
  • दैनिक (डिफ़ॉल्ट) - दिन के पहले रन पर जांच (स्थानीय समय)
  • अंतराल: XXX - जाँच हर XXX मिनट

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


अद्यतन:

क्या आप जानते हैं निर्भरता एक विशेष भंडार द्वारा प्रस्तुत किए जाना नहीं जा रहे हैं, तो आप इसे एक प्रोफाइल में अलग कर सकते हैं, तो यह है कि निर्माण में संदर्भित नहीं है।

<profiles> 
    <profile> 
    <id>remote</id> 
    <repositories> 
     <repository> 
     <id>central</id> 
     <url>http://repo1.maven.org</url> 
     <releases><enabled>true</enabled></releases> 
     <snapshots><enabled>false</enabled></snapshots> 
     </repository> 
     ... 
    </repositories> 
    </profile> 
    <profile> 
    <id>internal</id> 
    <repositories> 
     <repository> 
     <id>myrepo</id> 
     <url>http://maven.mycompany.com/m2</url> 
     <releases><enabled>true</enabled></releases> 
     <snapshots><enabled>false</enabled></snapshots> 
     </repository> 
     ... 
    </repositories> 
    </profile> 
</profiles> 
ऊपर config के साथ

, mvn पैकेज -Premote आंतरिक भंडार से कनेक्ट नहीं होगा, इसलिए टाइमआउट एक कारक नहीं होगा चल रहा है।

आप अपनी सेटिंग को कुछ अतिरिक्त config जोड़कर प्रत्येक निर्माण पर प्रोफाइल निर्दिष्ट करने के लिए होने से बचने कर सकते हैं:

<settings> 
    ... 
    <activeProfiles> 
    <activeProfile>internal</activeProfile> 
    <activeProfile>remote</activeProfile> 
    </activeProfiles> 
    ... 
</settings> 

Maven 2 के लिए।1 आप (~/.m2/settings.xml डिफ़ॉल्ट रूप से), उदाहरण के लिए Maven सेटिंग्स में एक सर्वर पर एक विन्यास जोड़ने, द्वारा समाप्ति सेट कर सकते हैं:

<server> 
    <id>myrepo</id> 
    <configuration> 
    <timeout>5000</timeout> <!-- 5 seconds --> 
    </configuration> 
</server> 
+0

मुझे इन अद्यतन नीतियों से अवगत नहीं था, लेकिन मैंने अभी कुछ निर्भरताओं को अपग्रेड किया है और इसलिए इसे बाहर जाना और डाउनलोड करना होगा। रिपोजिटरी मैनेजर से सहमत हुए, लेकिन जैसा कि मैं इस कंपनी के लिए परामर्श कर रहा हूं, मैं केवल उन कामों को ही कर सकता हूं जो वे मुझसे पूछते हैं। हो सकता है कि मैं भविष्य में एक रिपोजिटरी मैनेजर का उपयोग कर सकूं, हालांकि यह एक और चीज होगी जिसे उन्हें बनाए रखना है। – rado

+0

पर्याप्त मेला, मैंने अपने उत्तर को एक समाधान के साथ अपडेट किया है जो आपकी वर्तमान स्थिति में मदद कर सकता है। –

+0

पल.एक्सएमएल से को हटाने के लिए मैंने जो कुछ किया था, उसके लिए इसे करने के लिए, एमवीएन चलाएं और इसे रेपो 1 से डाउनलोड करने दें, फिर मेरी कस्टम रिपॉजिटरी को वापस रखें। – rado

0

एक त्वरित और गंदे हैक एक कस्टम मेजबान फ़ाइल प्रविष्टि के लिए नेटवर्क अनुरोधों पुनर्निर्देशित करने के लिए जोड़ रहा है वैध एक के लिए अवैध भंडार।

+0

एक अच्छा विचार की तरह लगता है, यह कैसा दिखता है? मुझे लगता है कि लिनक्स पर आपका मतलब '/ etc/hosts' है। –

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