2009-08-13 18 views
5

मैं क्या करना चाहता हूं मैवेन को मेरे स्थानीय भंडार में मौजूद प्रत्येक आर्टिफैक्ट के लिए 'maven-metadata.xml' डाउनलोड करने के लिए मजबूर करना है।मैवेन को केंद्रीय भंडार से maven-metadata.xml डाउनलोड करने के लिए कैसे मजबूर करें?

डिफ़ॉल्ट मैवेन व्यवहार रिमोट रिपॉजिटरीज़ से केवल मेटाडेटा डाउनलोड करना है (this question देखें)।

क्यों मुझे लगता है कि क्या करना चाहते हैं:

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

हालांकि, चूंकि मेरे स्थानीय भंडार में 'maven-metadata.xml' फ़ाइलें नहीं थीं, इसलिए इन मेटाडाटा फ़ाइलों को बिल्ड मशीन रिपोजिटरी में भी अनुपलब्ध है। अगर मैं केंद्रीय भंडार से मेटाडेटा फ़ाइलों को पुनर्प्राप्त कर सकता हूं, तो मेरे निर्माण मशीन पर एक काम कर रहे रिमोट रिपोजिटरी को अपलोड करना संभव होगा।

+0

के साथ एक भंडार ऑफ़लाइन मैं स्पष्ट आप वास्तव में क्या मतलब है नहीं कर रहा हूँ है, या तुम क्यों यह करने के लिए की जरूरत है। क्या आप समझ सकते हैं कि आप क्या हासिल करने की कोशिश कर रहे हैं? –

उत्तर

8

आप सार्वजनिक भंडारों से मेटाडेटा नहीं प्राप्त करना चाहते हैं, इसमें दिए गए आर्टिफैक्ट के सभी संस्करण उपलब्ध होंगे, जबकि आपके भंडार में रिलीज़ का कुछ सबसेट होगा।

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


यहां तक ​​कि अगर आप एक भंडार प्रबंधक के लिए नेक्सस के प्रयोग पर योजना नहीं बना रहे हैं, तो आप अभी भी उसका उपयोग अपने मेटाडाटा उत्पन्न करने के लिए कर सकते हैं।

  1. पहले install नेक्सस।
  2. (गठजोड़ काम निर्देशिका का पता लगाएँ डिफ़ॉल्ट $ {user.home}/sonatype काम से।
  3. गठजोड़ काम/विज्ञप्ति उप-निर्देशिका के लिए अपने स्थानीय भंडार सामग्री कॉपी करें।
  4. Start Nexus और नेक्सस से कनेक्ट ब्राउज़र (डिफ़ॉल्ट http://localhost:8081/nexus द्वारा) में मुख पृष्ठ पर व्यवस्थापक खाते (पासवर्ड admin123) बाएं हाथ की ओर खजाने लिंक पर
  5. क्लिक करें का उपयोग करने में
  6. प्रवेश करें।
  7. विज्ञप्ति भंडार, राइट-क्लिक करें का चयन करें और क्लिक पुनर्निर्माण मेटाडाटा

कुछ ही क्षणों में आप सभी कलाकृतियों के लिए उत्पन्न मेटाडाटा होना चाहिए। फिर आप उनको कॉपी कर सकते हैं जहां आपको उन्हें Nexus और अनइंस्टॉल करने की आवश्यकता है।

+1

मैं सहमत हूं, उसे बिल्ड और स्थानीय मशीनों के लिए साझा रेपो की आवश्यकता है। सिग्नल – sal

+1

सिंक में मेटाडेटा की दो प्रतियां रखने के लिए कोई रास्ता नहीं है समाधान मेरे लिए काम करता है। इसके अलावा, सलाह के लिए साल के लिए धन्यवाद, लेकिन मुझे वास्तव में क्या चाहिए, समस्या के लिए एक समाधान है, भले ही मैं समझता हूं कि यह आदर्श समाधान नहीं है ... –

4

डिफ़ॉल्ट भंडार super pom.xml में परिभाषित किए गए हैं कि सभी पोम्स डिफ़ॉल्ट रूप से प्राप्त होते हैं।

यदि स्थानीय द्वारा आप का मतलब है कि आप केवल ~/.m2/repos/* का उपयोग करना चाहते हैं तो ऑफ़लाइन मोड में काम करें। <offline>true</offline> में जोड़े अपने settings.xml

तो द्वारा स्थानीय क्या आपका मतलब अपने स्थानीय सर्वर, आप नेक्सस की तरह एक भंडार प्रबंधक स्थापित कर सकता है, इस तरह "दर्पण" के अंतर्गत गठजोड़ उपयोग करने के लिए अपनी सेटिंग्स फ़ाइल को संशोधित:

<mirror> 
    <id>central-proxy</id> 
    <mirrorOf>central</mirrorOf> 
    <url>my/local/nexus/server</url> 
</mirror> 

और रिमोट रिपॉजिटरीज को अक्षम करें जिन्हें आप नेक्सस में नहीं चाहते हैं।

+0

स्थानीय से मेरा मतलब ~/.m2/repos/* है, हालांकि अगर टैग या फ़्लैग मेवेन का उपयोग 'maven-metada.xml' फ़ाइलों को डाउनलोड नहीं करेगा जो मैं चाहता हूं। –

+0

मुझे लगता है कि आपको दूरस्थ मशीन के लिए अलग-अलग निर्माण और तैनाती की आवश्यकता है। बिल्डिंग मशीन को तैनाती के लिए डिस्क पर एक और जगह बनाने के लिए स्थानीय मैवेन रेपो का उपयोग करें। उस दूसरे भंडार को दृश्यमान बनाने के लिए कुछ सर्वर का उपयोग करें। आप यह भी चाहते हैं कि आपके स्थानीय बिल्डों को उस तीसरे प्रतिनिधि में तैनात किया जाए। मेटाडाटा उस स्थिति में खुद को हल करेगा। – sal

+0

क्या और क्यों ''? उपर्युक्त वर्णन मेरी मदद कर रहा है। – hari

1

एक चीज़ जो मैंने पाया वह है कि कोई जारवाना की प्रारंभिक खोज कर रहा था और इसे पोम के भीतर रखा था, जिससे मेटाडेटा त्रुटि संदेश उत्पन्न हुआ था। यह ...

<!-- <repository> 
     <id>jarvana</id> 
     <url>http://www.jarvana.com/jarvana/browse/</url> 
    </repository> --> 

.. इसे मिश्रित किया गया और त्रुटि चली गई।

0

रिपोजिटरी प्रबंधक बहुत अच्छा है लेकिन मैं इसे अपने लैपटॉप पर स्थापित और चलाने के लिए नहीं चाहता हूं। मैं सिर्फ संसाधन को सहेजना चाहता हूं। तो, मेरे समाधान के नीचे है:

  1. भंडार स्थापित के रूप में artifactory (https://www.jfrog.com/artifactory)
  2. रन इस सर्वर के माध्यम से अमल में लाना (स्थानीय होस्ट: 8081)
  3. रन दूरस्थ सर्वर के माध्यम से अमल में लाना (center.maven.org)
  4. artifactory
  5. फ़ोल्डर में विलय डाउनलोड करें: चरण 4 से फ़ोल्डर डाउनलोड करें और फ़ोल्डर ~/.m2/रिपोजिटरी पर फ़ोल्डर डाउनलोड करें।

अब मैं पूरी सामग्री (बाइनरी, स्रोत, एक्सएमएल, md5, SHA1)

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

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