2011-10-21 17 views
6

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

हालांकि, mvn install मेरे सामान्य पुस्तकालय के बाद, जब मैं फू को पुन: संकलित करता हूं तो यह नई आम पुस्तकालय का उपयोग नहीं करता है - यह आंतरिक भंडार में सामान्य पुस्तकालय के नवीनतम स्नैपशॉट का उपयोग करता रहता है। अगर मैं बदली हुई आम पुस्तकालय को तैनात करता हूं, तो फू इसे तुरंत उठाता है।

मैं स्थानीय भंडार में पहली बार देखने के लिए मेवेन कैसे प्राप्त कर सकता हूं?

अपडेट: जब फ़ाइल स्थानीय भंडार में स्थापित होती है, तो इसे foo-1.0.0-SNAPSHOT.jar जैसे नाम मिलते हैं, लेकिन जब मैं इसे तैनात करता हूं, तो यह टाइमस्टैम्प foo-1.0.0-20111104.191316-23.jar मिलता है। मुझे लगता है कि यही कारण है कि रिमोट आर्टिफैक्ट हर बार खींच लिया जाता है। कोई विचार क्यों mvn installmvn deploy जैसा काम नहीं कर रहा है? क्या इस तथ्य के साथ यह करना है कि मेरे पास तैनाती के लिए एक स्नैपशॉट रिपोजिटरी स्थापित है?

+0

क्या आपके पास अपने [settings.xml] (http://maven.apache.org/settings.html) में 'लोकल रिपोजिटरी' है जो एक अस्तित्वहीन स्थान पर इंगित करता है? – millhouse

+0

अपनी सिस्टम तिथि की तुलना अपने आंतरिक रेपो (उदा। नेक्सस) सिस्टम की तारीख से करें। यदि यह एक लंबा सफर तय है, तो इसके टाइमस्टैम्प – millhouse

उत्तर

3

डिफ़ॉल्ट रूप से, मैवेन प्रति दिन एक बार स्नैपशॉट कलाकृतियों के नए संस्करणों की जांच करता है। जब यह चेक करता है, तो यह रिमोट रिपोज़ से स्नैपशॉट डाउनलोड करेगा जो आपके पास स्थानीय रूप से नए हैं। या तो आपकी आर्टिफैक्ट टाइमस्टैम्प सिंक से बाहर हैं और आप मेवेन की अपडेट पॉलिसी (calling it with -U या setting the udpatePolicy जैसे "हमेशा" पर ओवरराइड करने के लिए कुछ कर रहे हैं, या फिर स्थानीय रिपोजिटरी जिसे आप आर्टिफैक्ट इंस्टॉल कर रहे हैं वह वही नहीं है जिसे आप ' बाद में मैवेन के खिलाफ दौड़ रहे हैं। आप जो वर्णन कर रहे हैं वह सामान्य मैवेन व्यवहार नहीं है। एक बेहतर उत्तर के लिए, अपने प्रश्न में अधिक जानकारी दें।

एक संकेतक जिसे आप देख सकते हैं: अपने सामान्य आर्टिफैक्ट को स्थापित करने के बाद, जब आप अगली फ्यू संकलित करते हैं, तो क्या मैवेन फिर से आम आर्टिफैक्ट डाउनलोड करता है? यदि ऐसा है, तो यह वास्तव में रिमोट से प्राप्त कर रहा है, और आपको अपनी अपडेट सेटिंग्स की जांच करनी होगी। यदि नहीं, तो आपके पास स्थानीय रूप से कुछ अजीब चल रहा है।

+0

धन्यवाद "जीतेंगे" धन्यवाद, स्पष्ट रूप से कोई भी मुझे बताने में सक्षम नहीं होगा कि बिना किसी विवरण के क्या हो रहा है। यह जानना उपयोगी है कि यह पहली जगह में मानक व्यवहार नहीं है, इसलिए मैं आगे की जांच कर सकता हूं! – schmmd

+0

मैंने कुछ और विवरण जोड़े - मेरे प्रश्न के अंत में मेरा अद्यतन देखें। – schmmd

+0

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

0

आप इस विकल्प को आजमा सकते हैं। यह मेरे लिए काम किया।

आपके प्रोजेक्ट के मुख्य pom.xml परिवर्तन 'स्नैपशॉट्स' सक्षम सेटिंग 'झूठी' में।

<repository> 
    <id>yourRepo</id> 
    <name>Repository</name> 
    <url>http://your.repo.com/repo</url> 
    <snapshots> 
     <enabled>false</enabled> 
    </snapshots> 
</repository> 
संबंधित मुद्दे