2012-10-11 27 views
8

में एकाधिक रिपॉजिटरीज़ का उपयोग करना मेरे पास एक प्रोजेक्ट है जो आंतरिक भंडार और केंद्रीय भंडार का उपयोग करता है। क्या कोई तरीका है कि मैं सेटिंग्स.एक्सएमएल को कॉन्फ़िगर कर सकता हूं जैसे कि मैं केवल एक के बजाय दोनों का उपयोग कर सकता हूं? जब मैंनेमेवेन

<mirrors> 
    <mirror> 
     <id>MY ID</id> 
     <url>MY URL</url> 
     <mirrorOf>*</mirrorOf> 
    </mirror> 
</mirrors> 

सेटिंग्स.xml में, मैं अपने आंतरिक भंडार में देख सकता हूं लेकिन यह केंद्रीय भंडार को ओवरराइड करता है।

मुझे यकीन है कि यह मेवेन के लिए नए लोगों के लिए एक आम समस्या है।

उत्तर

8

ऐसा करने के कुछ तरीके हैं।

सर्वश्रेष्ठ, आईएमओ, आपके स्थानीय भंडार सर्वर को मैवेन सेंट्रल के लिए प्रॉक्सी के रूप में कार्य करना है। नेक्सस और आर्टिफैक्टरी दोनों बॉक्स से बाहर करते हैं। यदि आप अपाचे या किसी अन्य वेब सर्वर का उपयोग कर रहे हैं, तो आपको स्विच करना चाहिए।

आप अपनी सेटिंग अपने दर्पण से लक्ष्य सर्वर को बाहर अद्यतन कर सकते हैं:

<mirrorOf>*,!MyOtherRepository</mirrorOf> 

यह काम करता है, तो आप बहुत से स्थानीय भंडार सर्वर है, लेकिन मुझे नहीं लगता कि आप केंद्रीय इस तरह से बाहर कर सकते हैं करते हैं: डिफ़ॉल्ट रूप से, मेवेन केंद्रीय में कलाकृतियों की तलाश में है, और आपका सर्वर इसके लिए स्टैंड-इन के रूप में कार्य करता है।

जो आपके पीओएमएस में स्पष्ट भंडार प्रविष्टियां छोड़ देता है, जो स्थानीय भंडार का संदर्भ देता है। यदि आपका स्थानीय भंडार सिर्फ आपकी कलाकृतियों की सेवा करता है, तो यह करने के लिए दूसरी सबसे आसान चीज हो सकती है (विशेष रूप से यदि आप एक अभिभावक पीओएम का उपयोग करते हैं जो भंडार विनिर्देश रखता है)।

+0

नहीं, मेरे पास वास्तव में एक दूरस्थ भंडार है जो कई अन्य लोगों की कलाकृतियों की सेवा करता है।मुझे सेटिंग्स की जरूरत है s.t. मेवेन केंद्रीय और उस रिमोट रिपोजिटरी दोनों के परिणामों के लिए जांच करता है। –

+0

फिर, ऐसा करने का सबसे आसान तरीका एक स्थानीय भंडार सर्वर है जो प्रॉक्सी के रूप में कार्य करता है। मुझे लगता है कि आप अपने (पैरेंट) पीओएम में स्पष्ट '' प्रविष्टियों के साथ फंस गए हैं। – parsifal

4

आपका दर्पण निर्देश वर्तमान में सब कुछ प्रतिबिंबित कर रहा है। आप नामित खजाने इस प्रकार बाहर कर सकते हैं: myExcludedRepo नामित भंडार को छोड़कर

<mirrorOf>!myExcludedRepo,*</mirrorOf> 

ऊपर दर्पण सब कुछ।

यहां Maven guide for mirroring है। नोट विशेष रूप से उन्नत चिह्नित अनुभाग। वहां बहुत सारी क्षमताएं हैं।

0

मैं एक काम कर जवाब है, के रूप में जवाब, लोगों के लिए द्वारा this link

धन्यवाद निर्देश दिए बजाय pom.xml बदल सकते हैं और मक्खी पर दूरस्थ खजाने को जोड़ने के लिए है, जो पाया है, और मैं अपने सुझाव मान चाहते हैं कर सकते हैं अधिक भंडारों और जटिल विन्यास के साथ अधिक जटिल परिदृश्यों के लिए उपयोगी हो।

+0

ठीक है, आपको यह मिला है, हालांकि "जो आपके पोम्स में स्पष्ट भंडार प्रविष्टियां छोड़ता है" मुझे बहुत स्पष्ट लग रहा था। – parsifal

+0

ठीक है। मैं तब आपका जवाब स्वीकार करूंगा :) (हालांकि उस लिंक ने निम्न स्तर का समाधान प्रदान किया)। –

0

मैं तीन रिपोज़ (नेक्सस का उपयोग करके) का उपयोग करता हूं, पहला एक प्रॉक्सी भंडार है जिसमें मैं सभी बाहरी भंडार जोड़ता हूं। रिलीज और स्नैपशॉट्स की तैनाती के लिए अन्य दो मेरे आंतरिक भंडार हैं।

<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"> 
    <!-- http://maven.apache.org/ref/3.0.4/maven-settings/settings.html --> 

    <interactiveMode>true</interactiveMode> 
    <offline>false</offline> 

    <mirrors> 
    <mirror> 
     <id>nexus</id> 
     <mirrorOf>external:*</mirrorOf> 
     <url>http://localhost:3129/nexus/content/groups/public</url> 
    </mirror> 
    </mirrors> 

    <profiles> 
    <profile> 
     <id>nexus</id> 
     <repositories> 
      <repository> 
       <id>central</id> 
       <url>http://central</url> 
       <releases> 
        <enabled>true</enabled> 
       </releases> 
       <snapshots> 
        <enabled>true</enabled> 
       </snapshots> 
      </repository> 

      <repository> 
       <id>internal.releases</id> 
       <url>http://localhost:3129/nexus/content/repositories/releases</url> 
       <releases> 
        <enabled>true</enabled> 
       </releases> 
       <snapshots> 
        <enabled>false</enabled> 
       </snapshots> 
      </repository>   

      <repository> 
       <id>internal.snapshots</id> 
       <url>http://localhost:3129/nexus/content/repositories/snapshots</url> 
       <releases> 
        <enabled>false</enabled> 
       </releases> 
       <snapshots> 
        <enabled>true</enabled> 
       </snapshots> 
      </repository>   
     </repositories> 

     <pluginRepositories> 
      <pluginRepository> 
       <id>central</id> 
       <url>http://central</url> 
       <releases> 
        <enabled>true</enabled> 
       </releases> 
       <snapshots> 
        <enabled>true</enabled> 
       </snapshots> 
      </pluginRepository> 
     </pluginRepositories> 
     <properties> 
      <downloadSources>true</downloadSources> 
      <downloadJavadocs>true</downloadJavadocs>   
     </properties> 
    </profile> 
    </profiles> 

    <activeProfiles> 
    <activeProfile>nexus</activeProfile> 
    </activeProfiles> 

    <servers> 
    <server> 
     <id>internal.releases</id> 
     <username>admin</username> 
     <password>XXX</password> 
    </server> 
    <server> 
     <id>internal.snapshots</id> 
     <username>admin</username> 
     <password>XXX</password> 
    </server> 
    </servers> 

</settings> 

Maven, उन सब का उपयोग करता है तो आप "^/मेरी/निजी/संकुल /.*" ब्लॉक करने के लिए तो यह होता है नेक्सस की रूटिंग सुविधा का उपयोग करना चाह सकते हैं: यहाँ मेरी .m2/settings.xml है बाहरी भंडारों से आंतरिक पैकेज लाने की कोशिश न करें। मैंने प्रॉक्सी रेपो में आंतरिक रिपोज़ को नहीं जोड़ा है।

आपको काम करने के लिए अपनी pom.xml फ़ाइलों को समायोजित करने की आवश्यकता नहीं है। बस "एमवीएन तैनाती" दर्ज करें।