2010-11-04 11 views
20

हमारे आंतरिक भंडार (आर्टिफैक्टरी) में अब हमारे आंतरिक पुस्तकालयों के स्थिर निर्माण के साथ-साथ स्नैपशॉट संस्करण दोनों शामिल हैं।मैवेन SNAPSHOT को भंडार से निर्मित करता है

स्थिर निर्माण के लिए भंडार से कुछ भी डाउनलोड करने में कोई समस्या नहीं हुई है।

हालांकि, जब मैं एक-स्नैपशॉट जोड़ता हूं, तो मैवेन निर्भरता को खोजने में असमर्थ होने का दावा करता है, भले ही यह निश्चित रूप से भंडार में है।

यदि मैं स्थानीय रूप से निर्भरता का निर्माण और तैनाती करता हूं (यानी मेरे स्थानीय रेपो में) सभी सामान्य रूप से काम करते हैं।

मूलतः, यह काम करता है:

<dependency> 
    <groupId>com.example</groupId> 
    <artifactId>ourlibrary</artifactId> 
    <version>1.0.0</version> 
</dependency> 

और इस कार्य नहीं करता:

<dependency> 
    <groupId>com.example</groupId> 
    <artifactId>ourlibrary</artifactId> 
    <version>1.0.1-SNAPSHOT</version> 
</dependency> 

हालांकि दोनों संस्करणों में उसी तरह का निर्माण किया और तैनात (जहाँ तक मैं संभवतः बता सकते हैं) थे सही ढंग से भंडार के लिए।

त्रुटि:

Missing: 
---------- 

1) com.example:ourlibrary:jar:1.0.1-SNAPSHOT, 

    Try downloading the file manually from the project website. 

    Then, install it using the command: 
     mvn install:install-file -DgroupId=com.example -DartifactId=ourlibrary -Dversion=1.0.1-SNAPSHOT, -Dpackaging=jar -Dfile=/path/to/file 

    Alternatively, if you host your own repository you can deploy the file there: 
     mvn deploy:deploy-file -DgroupId=com.example -DartifactId=ourlibrary -Dversion=1.0.1-SNAPSHOT, -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id] 

    Path to dependency: 
     1) com.example:product:war:2.0.0-SNAPSHOT 
     2) com.example:ourlibrary:jar:1.0.1-SNAPSHOT, 

इस this सवाल के समान लग रहा है, संकल्प वहाँ पर पहुंचे मेरे मामले पर लागू नहीं होता।

इस मुद्दे में किसी भी अंतर्दृष्टि की सराहना की जाएगी।

[DEBUG] Skipping disabled repository central 
[DEBUG] ourlibrary: using locally installed snapshot 
[DEBUG] Skipping disabled repository central 
[DEBUG] Using mirror: http://repo.example.com/repo (id: repo.example.com) 
[DEBUG] Artifact not found - using stub model: Unable to download the artifact from any repository 

    com.example:ourlibrary:pom:1.0.1-SNAPSHOT 

from the specified remote repositories: 
    repo.example.com (http://repo.example.com/repo) 


[DEBUG] Using defaults for missing POM com.example:ourlibrary:pom:1.0.1-SNAPSHOT:compile 
[DEBUG] com.example:ourlibrary:jar:1.0.1-SNAPSHOT:compile (selected for compile) 

उत्तर

12

दो विचार मन में आते हैं::

संपादित

-X (के रूप में जॉन वी सुझाव दिया) के साथ चल रहा है निम्नलिखित का पता चला

  1. में पथ संरचना आपके आर्टिफैक्ट के लिए आपकी आंतरिक रिपोजिटरी गलत है। मैं -12 पैरामीटर के साथ मेवेन कमांड चलाने का सुझाव देता हूं। यह फ़ाइलों को डाउनलोड करने पर मेवेन के प्रयास को प्रदर्शित करेगा। लाइन प्राप्त करें जिसमें आपकी रिपोजिटरी यूआरएल है और इसे स्वयं देखें और देखें।

    पथ देखो की तरह

    /com/example/ourlibrary/1.0.1/ourlibrary-1.0.1-SNAPSHOT.jar

  2. आप अपने पोम में भंडार के रूप में अपने भंडार में शामिल नहीं था चाहिए। xml
+2

मैं पोम में रेपो घोषित नहीं किया था, बल्कि Maven सेटिंग्स में निर्दिष्ट है कि हमारे रेपो एक सार्वभौमिक था (*) आईना।क्या यह पर्याप्त नहीं होना चाहिए (यह निश्चित रूप से स्थिर निर्माण के लिए पर्याप्त है)? पीओएम को स्पष्ट घोषणा जोड़ना इस मुद्दे को हल करने लगता है। – Kris

+0

दुर्भाग्यवश मैंने रिपॉजिटरीज़ के लिए settings.xml के साथ बहुत अधिक काम नहीं किया है। मैंने उन्हें एक अभिभावक पोम में शामिल किया है, इसलिए किसी भी डेवलपर को ताजा जरूरतों को शुरू करने के लिए सेटिंग्स को बदलने की ज़रूरत नहीं है क्योंकि भंडार को बदलना है (जो वास्तव में हमारे लिए है) –

+14

मुझे लगता है कि मैंने इसका तर्क दिया है। स्थिर निर्माण के लिए, मैवेन 'केंद्रीय' के लिए डिफ़ॉल्ट होगा जो मेरी दर्पण सेटिंग्स हमारे भंडार पर रीडायरेक्ट करता है। SNAPSHOT के लिए कोई डिफ़ॉल्ट नहीं है (क्योंकि केंद्रीय उन्हें संभाल नहीं करता है) और पीओएम की अनुपस्थिति में एक रेपो निर्दिष्ट करता है (जो * SNAPSHOT बनाता है) को नियंत्रित करता है, यह इसे देखने की कोशिश किए बिना भी असफल हो जाएगा। – Kris

11

आमतौर पर आपके पास यूआरएल रिलीज से अलग स्नैपशॉट यूआरएल है। एक ही भंडार में बस अलग-अलग पथ, लेकिन पोम में अलग भंडार के रूप में सूचीबद्ध। स्नैपशॉट के लिए एक स्नैपशॉट सक्षम किया है की जरूरत है, और रिलीज के लिए एक स्नैपशॉट अक्षम कर दिया है:

<repositories> 
     <repository> 
      <id>central</id> 
      <url> 
       http://<releases-url> 
      </url> 
      **<snapshots> 
       <enabled>false</enabled> 
      </snapshots>** 
     </repository> 

     <repository> 
      <id>snapshots</id> 
      <url> 
       http://<snapshots-url> 
      </url> 
      <snapshots> 
       **<enabled>true</enabled>** 
       <!-- never, daily, interval:X (where X is in minutes) or always --> 
       <!--<updatePolicy>daily</updatePolicy> --> 
      </snapshots> 
      <releases> 
       <enabled>false</enabled> 
      </releases> 
     </repository> 
    </repositories> 
+0

यह काम करता है हालांकि आपको ध्यान रखना चाहिए कि यह Maven settings.xml फ़ाइल के प्रोफाइल अनुभाग के अंतर्गत आता है। – Kris

+0

हम इसे अपने मास्टर/पेरेंट पोम फ़ाइल में रखते हैं कि हमारी सभी परियोजनाएं उत्तराधिकारी हैं। इस तरह डेवलपर्स को इसे अपनी सेटिंग्स.एक्सएमएल फाइलों में कॉन्फ़िगर करने की आवश्यकता नहीं है। सेटिंग्स.एक्सएमएल मुख्य रूप से ऐसी सामग्री के लिए है जो मशीन या उपयोगकर्ता विशिष्ट है, और एक परियोजना के लिए सभी डेवलपर्स आमतौर पर एक ही भंडार का उपयोग करना चाहिए। जबकि आप सेटिंग्स.xml फ़ाइल में भंडार डाल सकते हैं, मुझे लगता है कि यह एक अपवाद मामला होगा, न कि मानक। – kevinmrohr

+0

बहुत अजीब बात है कि मैं इसके बिना स्नैपशॉट्स तैनात कर सकता हूं, लेकिन तैनात आकार के डाउनलोड को डाउनलोड करना संभव नहीं है। प्रोफाइल सेटअप ठीक काम करता है। – Betlista

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