2011-10-10 12 views
14

तो मेरे पास एक प्रोजेक्ट है जो किसी अन्य प्रोजेक्ट के स्नैपशॉट संस्करण पर निर्भर करता है। निर्भरता है:क्या मैवेन स्वचालित रूप से स्नैपशॉट संस्करण डाउनलोड करने का कोई तरीका है?

<dependency> 
    <groupId>org.oop</groupId> 
    <artifactId>oop</artifactId> 
    <version>0.9.9-SNAPSHOT</version> 
</dependency> 

OOP परियोजना के लिए, मैं एक 'mvn स्वच्छ तैनाती' करना था, इसलिए स्नैपशॉट संस्करण Maven केंद्रीय भंडार में कहीं होना चाहिए। लेकिन जब मैं एक mvn साफ स्थापित करते हैं, इसके बाद के संस्करण स्नैपशॉट निर्भरता हल नहीं किया जा सकता है और मैं इस मिल:

लापता:

1) org.oop: OOP: जार: 0.9.9-SNAPSHOT

प्रोजेक्ट वेबसाइट से फ़ाइल को मैन्युअल रूप से डाउनलोड करने का प्रयास करें।

फिर, आदेश का उपयोग कर इसे स्थापित: mvn स्थापित: स्थापित फ़ाइल -DgroupId = org.oop -DartifactId = OOP -Dversion = 0.9.9-SNAPSHOT -Dpackaging = जार -Dfile =/path/to/फ़ाइल mvn तैनाती:

वैकल्पिक रूप से, अगर आप अपने खुद के भंडार की मेजबानी तुम वहाँ फ़ाइल तैनात कर सकते हैं तैनात फ़ाइल -DgroupId = org.oop -DartifactId = OOP -Dversion = 0.9.9-SNAPSHOT -Dpackaging = जार -Dfile =/path/to/file -Durl = [url] -DrepositoryId = [id]

क्या मैवेन स्वचालित रूप से स्नैपशॉट डाउनलोड करने का कोई तरीका है? मुझे यहां कुछ याद आना चाहिए।

EDIT1: मेरी settings.xml पर मेरे पास है:

<server> 
     <id>sonatype-nexus-snapshots</id> 
     <username>XXXXXX</username> 
     <password>XXXXXX</password> 
    </server> 

    <server> 
     <id>sonatype-nexus-staging</id> 
     <username>XXXXXX</username> 
     <password>XXXXXX</password> 
    </server> 

EDIT2: enter image description here

उत्तर

13

बस इसे अपने ~/.m2/सेटिंग्स में जोड़ें।एक्सएमएल:

<profiles> 
    <profile> 
    <id>allow-snapshots</id> 
     <activation><activeByDefault>true</activeByDefault></activation> 
    <repositories> 
     <repository> 
     <id>snapshots-repo</id> 
     <url>https://oss.sonatype.org/content/repositories/snapshots</url> 
     <releases><enabled>false</enabled></releases> 
     <snapshots><enabled>true</enabled></snapshots> 
     </repository> 
    </repositories> 
    </profile> 
</profiles> 
+2

क्या इसे किसी भी तरह से पीओएम में जोड़ा जा सकता है जहां निर्भरता को repl.xml में घोषित किया जाता है? – Sergio

14

स्नैपशॉट को अद्यतन करने के यू विकल्प के साथ की कोशिश

-U,--update-snapshots     Forces a check for updated 
             releases and snapshots on remote 
             repositories 

हालांकि, आपने कहा:

मैंने एक 'एमवीएन क्लीन तैनाती' की है, इसलिए स्नैपशॉट संस्करण मैवेन केंद्रीय भंडार में कहीं होना चाहिए।

यह संभव नहीं है, आपका स्नैपशॉट कहीं और जा रहा है। अगर मैं अपने व्यक्तिगत भंडार को विन्यस्त बिना एक mvn clean deploy करना मुझे मिलता है:

तैनाती विफल रहा: भंडार तत्व distributionManagement तत्व के अंदर या -DaltDeploymentRepository = आईडी :: लेआउट :: url पैरामीटर में पोम में निर्दिष्ट नहीं किया गया

तैनाती सक्षम करने के लिए, वहाँ है कुछ विन्यास उदाहरण के लिए की तरह, pom.xml में जोड़े जाने की:

<distributionManagement> 

    <!-- Publish versioned releases here --> 
    <repository> 
     <id>myrepo</id> 
     <name>My releases</name> 
     <url>http://nexus.mycompany.com/nexus/content/repositories/releases</url> 
    </repository> 

    <!-- Publish snapshots here --> 
    <snapshotRepository> 
     <id>myrepo</id> 
     <name>my snapshots</name> 
     <url>http://nexus.mycompany.com/nexus/content/repositories/snapshots</url> 
    </snapshotRepository> 

</distributionManagement> 

<repositories> 
    <repository> 
     <id>myrepo</id> 
     <name>My Public Repository</name> 
     <url>http://nexus.mycompany.com/nexus/content/groups/public</url> 
     <releases> 
      <enabled>true</enabled> 
     </releases> 
     <snapshots> 
      <enabled>true</enabled> 
     </snapshots> 
    </repository> 
</repositories> 
+0

सहायता के लिए धन्यवाद, मेरे प्रश्न में मेरे आखिरी संपादन पर मेरे सेटिंग्स.एक्सएमएल में मेरे पास क्या है। साथ ही, जिस पुस्तकालय का मैं उल्लेख करने की कोशिश कर रहा हूं वह है। ग्रुपआईडी: me.soliveirajr आर्टिफैक्ट: menta-container। संस्करण: 0.9.9-स्नैपशॉट। क्या आप इसे मैवेन रिपोजिटरी में कहीं भी पा सकते हैं? मैं इसे यहां देख सकता हूं ... – chrisapotek

+0

EDIT2 देखें जहां मैं स्नैपशॉट देख सकता हूं। – chrisapotek

+0

ठीक है और जब आप एमवीएन को प्रकाशित प्रकाशित करते हैं तो ठीक है? देखने में कोई त्रुटि नहीं है? अगर एमवीएन-तैनाती के साथ प्रयास करें और यदि आवश्यक हो तो एमवीएन-एक्स तैनाती – stivlo

0

आप या तो

012,
  • एक माता पिता परियोजना जो आपके सभी स्नैपशॉट बनाता है, या
  • का उपयोग अपने Maven बिल्ड सर्वर करने के लिए अपने फोटो (गठजोड़/archiva/..) जैसे का उपयोग कर तैनात, एमवीएन:
1

क्या निर्भरता आपके भंडार में मौजूद है? (pom.xml या settings.xml में)?

ऐसा नहीं लगता है। वैसे, अपनी कॉन्फ़िगरेशन पर नज़र डालें, बस आप -o (ऑफ़लाइन) का उपयोग नहीं कर रहे हैं। स्नैपशॉट रीफ्रेश करने के लिए आप -U का उपयोग भी कर सकते हैं।

19

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

<updatePolicy>interval:5</updatePolicy> 

यह Maven जांच हर 5 मिनट में कर देगा (यदि आप इसे अक्सर बनाते हैं)। वैकल्पिक रूप से, आप मैन्युअल रूप से चेक को मजबूर करने के लिए -U या --update-snapshots विकल्प का उपयोग कर सकते हैं।

हालांकि, यह निर्भरता नहीं पा रहा है। क्या आप स्नैपशॉट निर्भरता के लिए अपनी रेपो सेटिंग्स और आर्टिफैक्ट कॉन्फ़िगरेशन पोस्ट कर सकते हैं?

क्या आपके भंडार में org.oop:oop:jar:0.9.9-SNAPSHOT आर्टिफैक्ट है?

... तो स्नैपशॉट संस्करण मैवेन केंद्रीय भंडार में कहीं कहीं होना चाहिए।

नहीं, यह नहीं है। मैंने इसे देखने की कोशिश की, लेकिन इसे नहीं मिला। अफैक, कुछ स्टेजिंग तंत्र है, इसलिए शायद आपकी सेटिंग्स गलत हैं। लेकिन आम तौर पर, जैसा कि पहले से ही कहा गया है, आप जायेंगे और आर्टिफैक्टरी या नेक्सस जैसे अपने रिपोजिटरी मैनेजर का उपयोग करेंगे।

+0

के साथ अपडेट किया गया है। यहां लाइब्रेरी है जिसे मैं डाउनलोड करने का प्रयास कर रहा हूं: GroupID: me.soliveirajr Artifact: menta -केंटेनर संस्करण: 0.9.9-स्नैपशॉट। मैं इसे भंडार में पा सकता हूं। – chrisapotek

+0

कृपया EDIT2 देखें जहां मैं स्नैपशॉट देख सकता हूं। – chrisapotek

+0

@chrisapotek जो 'org.oop नहीं है: ओओपी: जार: 0.9.9-स्नैपशॉट 'लेकिन' me.soliveirajr: menta-container: jar: 0.9.9-SNAPSHOT' तब - उस मामले में आपकी निर्भरता गलत है। – Thomas

0

चलिए यह सुनिश्चित करने के लिए शब्दावली को थोड़ा सा स्पष्ट करते हैं कि कोई गलतफहमी नहीं है।

"मेवेन सेंट्रल" (http://search.maven.org/) एक वैश्विक साइट है जहां आपको केवल रिलीज मिलते हैं। सेंट्रल स्नैपशॉट स्वीकार नहीं करता है इसलिए तैनात करने से आपको एक त्रुटि मिलनी चाहिए।

आप शायद अपने स्थानीय/कंपनी के व्यापक मेवेन प्रॉक्सी/कैश का मतलब है। स्नैपशॉट संस्करणों को अस्वीकार करने के लिए इन्हें भी कॉन्फ़िगर किया जा सकता है। नेक्सस के मामले में, आप अधिक जटिल नियम भी परिभाषित कर सकते हैं। मेरे मामले में, मुझे कोई समस्या थी जिसने mvn deploy के दौरान कोई त्रुटि नहीं दी लेकिन मुझे सर्वर के लॉग में कोई त्रुटि दिखाई दे रही थी।

डेटा का पालन करने का प्रयास करें: मैवेन डेटा को अपलोड करने के लिए डीबग (mvn -X) सक्षम करें। फिर यह देखने के लिए सर्वर की जांच करें कि क्या कलाकृतियों को वास्तव में अपलोड किया गया था या नहीं। त्रुटियों के लिए सर्वर के लॉग की जांच करें।

यह भी ध्यान रखें कि स्नैपशॉट निर्भरता केवल दिन में एक बार ताज़ा होती है; तो यह काम नहीं करेगा:

पीसी # 1: mvn install -> निर्भरता पीसी # 2 लापता त्रुटि: mvn deploy पीसी # 1: mvn install -> निर्भरता अभी भी वजह से याद आ रही है "अद्यतन दिन में एक बार 'की नीति

अपने कैश किए गए मेटाडेटा को रीफ्रेश करने के लिए मेवेन को मजबूर करने के लिए mvn install -U आज़माएं।

+0

अपने स्थानीय रेपो ('$ HOME/.m2/भंडार /') की जांच करें: क्या फ़ोल्डर पदानुक्रम मौजूद है? क्या वहां कोई फ़ाइल '* मेटाडाटा * .xml' है? इसमें क्या शामिल है? क्या आप अपने नेक्सस सर्वर पर डाउनलोड अनुरोध देखते हैं? –

+0

मैं अपने नेक्सस सर्वर का उपयोग नहीं कर रहा हूं। मैं सोनाटाइप स्नैपशॉट रिपोजिटरी का उपयोग कर रहा हूं। मेरी EDIT2 जांचें। – chrisapotek

+0

सोनाटाइप पर चल रहे नक्सस उदाहरण से लॉग प्राप्त करने का एक तरीका खोजें। मेरे सभी प्रश्न भी पढ़ें; वे हमेशा एक-दूसरे पर निर्भर नहीं रहते हैं। उनमें से एक आपको सही रास्ते पर ले जा सकता है। –

0

मैंने स्नैपशॉट्स के मुद्दे को हिट करने के बाद भी कमांड लाइन पर सेटिंग को अद्यतन नहीं किया। मेरे लिए मुद्दा था कि मेरा ग्राहक मैवेन 3 था और सर्वर मेवेन 2 था, और मेवेन 3 अद्वितीय स्नैपशॉट्स अब समर्थित नहीं हैं। हमें 3.xx क्लाइंट्स का समर्थन करने के लिए टाइमस्टैम्प स्नैपशॉट के साथ एक नया संग्रह बनाना पड़ा।

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

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