2010-11-22 10 views
9

मैंने हाल ही में अपने स्थानीय भंडार (.m2/repository) पर कुछ मेवेन कलाकृतियों को डाउनलोड किया है। अब मैंने नेक्सस रिपोजिटरी मैनेजर स्थापित किया है और फिर से सभी कलाकृतियों को डाउनलोड किए बिना अपने स्टोरेज को भरने की जरूरत है। स्थानीय के साथ नेक्सस भंडार को अद्यतन करने का कोई तरीका है। मैं बस उन्हें कॉपी नहीं करना चाहता क्योंकि नेक्सस अलग-अलग कलाकृतियों को उनके सार्वजनिक सर्वर (केंद्रीय, कोडहॉस इत्यादि) और स्थानीय भंडार संरचना से संबंधित नहीं है।स्थानीय कलाकृतियों के साथ नेक्सस रिपोजिटरी अपडेट करें

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

उत्तर

13

नेक्सस खजाने के कई प्रकार के होते हैं: खजाने की मेजबानी (उन है कि वास्तव में Maven कलाकृतियों की दुकान), प्रॉक्सी खजाने (है कि अन्य दूरदराज के खजाने की ओर यातायात पुनर्निर्देशित जब एक विरूपण साक्ष्य अनुरोध किया जाता है), आभासी खजाने (एक मात्र maven1 भंडार के एडाप्टर [इस प्रश्न के दायरे से बाहर])। आप रिपोजिटरी समूह भी बना सकते हैं जो इसके किसी भी समेकन से कलाकृतियों की सेवा कर सकता है (public भंडार इनमें से एक है)।

इसके अलावा, गठजोड़ स्नैपशॉट और विज्ञप्ति में अपने प्रकाशन नीति के अनुसार उनके खजाने बिताते हैं। पूर्व स्टोर केवल स्नैपशॉट कलाकृतियों; जबकि बाद में, सिद्धांत रूप में, स्नैपशॉट्स और रिलीज़ दोनों को स्टोर कर सकते हैं, लेकिन जब वास्तव में रेपो बहुत बड़ा होता है और इसमें स्नैपशॉट होते हैं तो यह वास्तव में छोटी गाड़ी का व्यवहार करता है।

के लिए अपने कलाकृतियों की मेजबानी करने के लिए आप की जरूरत करने के लिए:

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

<dependency> 
     <groupId>org.sonatype.nexus.tools</groupId> 
     <artifactId>nexus-repository-conversion-tool</artifactId> 
     <version>1.8.0.1</version> 
     <classifier>cli</classifier> 
    </dependency> 

एक बार downlaoded तुम सिर्फ निष्पादित कर सकते हैं java -jar nexus-repository-conversion-tool-1.8.0.1-cli.jar -rSource -oTarget जहां Source निर्देशिका है कि स्थानीय भंडार गठजोड़ करने के लिए स्थानांतरित करने के लिए होता है, और Target एक मौजूदा, रिक्त है और लिखने योग्य निर्देशिका जहां कनवर्टन उपकरण विभाजित भंडार छोड़ देगा। बशर्ते कि स्रोत निर्देशिका repository है और लक्ष्य temp है, यह temp/repository-snapshots और temp/repository-releases निर्देशिका बनाएगा।

दूसरा: अपने विभाजित रेपो को नेक्सस में ले जाएं। और उन्हें ${NEXUS_HOME}/sonatype-work/nexus/storage में छोड़ दें, या जहां भी आपकी नेक्सस स्थापना भंडार को संग्रहीत करने के लिए कॉन्फ़िगर किया गया हो।

तीसरा: रेपोस आप दूसरे चरण में ले जाया गया के रूप में एक ही आईडी वाले दो की मेजबानी खजाने पैदा करते हैं। (उदाहरण में repository-snapshots और repository-releases)

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

+0

आपको यह भी विचार करना होगा कि आप अपने भंडार में किस तरह के कलाकृतियों की मेजबानी कर रहे हैं। नेक्सस स्पैनिशशॉट में रिपॉजिटरीज को विभाजित करता है और गीलेर के आधार पर रिलीज करता है, यह स्नैपशॉट कलाकृतियों को होस्ट करता है या रिलीज + स्नैपशॉट करता है। हालांकि यह – Miguel

+0

ओह, मैंने आपका जवाब बहुत देर से पढ़ा। आपके दृष्टिकोण ने मुझे बहुत समय बचाया होगा, मुझे लगता है। मैंने स्नैपशॉट और रिलीज कलाकृतियों को भी अलग किया और फिर मैन्युअल रूप से उन्हें संबंधित नेक्सस रिपॉजिटरीज़ में ले जाया गया। मुझे किसी भी तरह से क्ली का उपयोग करके प्रत्येक रिलीज आर्टिफैक्ट को तैनात करना पड़ा। स्नैपशॉट्स के लिए नेक्सस कैश को पुन: अनुक्रमणिका करने के लिए पर्याप्त था। धन्यवाद! – mamuesstack