2012-03-15 13 views
13

हमारे पास एक नेक्सस स्थानीय भंडार प्रबंधक है जो हमारी सभी आंतरिक परियोजनाओं (साथ ही बाहरी भंडारों को प्रतिबिंबित करता है) को संभालता है। हमारी आंतरिक परियोजनाओं के लिए, हम केवल नवीनतम संस्करण के स्नैपशॉट बिल्ड को ही रखते हैं। उदाहरण के लिए यदि हमारे पास प्रोजेक्टएक्स 1.0, 1.1 और 1.2-एसएनएपीएसएचओटी था, जैसे ही 1.2 जारी किया गया था, हम 1.2-स्नैपशॉट हटा देंगे और फिर हमारे नेक्सस रिपोजिटरी में 1.0, 1.1, 1.2 और 1.3-स्नैपशॉट होंगे।स्थानीय भंडार में पुराने स्नैपशॉट को संभालने का सबसे अच्छा तरीका?

समस्या यह है कि हमारे जेनकिन्स सर्वर के पास स्थानीय ओएम/रिपोजिटरी फ़ोल्डर में सभी पुराने स्नैपशॉट हैं और इन पुराने स्नैपशॉट्स के खिलाफ सफलतापूर्वक परियोजनाएं बनाने के लिए जारी है, जब वास्तव में उन्हें असफल होना चाहिए (और हमारे डेवलपर्स को ठीक करना चाहिए पीओएम फाइलें।)

क्या इन अनचाहे स्नैपशॉट को हटाने के लिए मैवेन को कॉन्फ़िगर किया जा सकता है (सेटिंग्स.xml या pom.xml में) अगर वे नेक्सस रिपोजिटरी में मौजूद नहीं हैं?

यदि नहीं, तो उनसे छुटकारा पाने का सबसे अच्छा तरीका क्या है? जेनकींस विन्यास, क्रॉन नौकरी, अन्य विकल्प?

धन्यवाद ...

+0

संबंधित प्रश्न, कैसे _developers_ को अपने स्थानीय .m2 \ repository फ़ोल्डर में पुराने टाइमस्टैम्प किए गए कलाकृतियों से छुटकारा पाना चाहिए: http://stackoverflow.com/q/4275466/223837। –

उत्तर

0

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

+0

यह समस्या से निपटने का सबसे दर्द रहित और प्रभावी तरीका है। धन्यवाद! – user1071914

-3

यह आपके जेनकींस सर्वर पर मेवेन के साथ एक कॉन्फ़िगरेशन समस्या हो सकती है।

Maven और configured समय-समय पर <snapshots> के लिए <repository> खंड में <updatePolicy> का मूल्य को विन्यस्त द्वारा अद्यतन फोटो देखने के लिए होना चाहिए कर सकते हैं।

<updatePolicy>daily</updatePolicy> 

विकल्प हैं: always, daily (डिफ़ॉल्ट), interval:X या never (जहाँ X मिनट में एक पूर्णांक है)।

इसके अलावा, यदि संस्करण बदलता है (1.1-SNAPSHOT से 1.2-SNAPSHOT तक), यह स्पष्ट नहीं है कि जेनकींस कैसे पुराने (1.1-SNAPSHOT) संस्करण के साथ सफलतापूर्वक निर्माण करेगा।

+1

मैं वास्तव में विपरीत प्रश्न पूछ रहा था: स्थानीय भंडार में स्नैपशॉट्स को स्वचालित रूप से कैसे प्राप्त करें, उन्हें अपडेट न करें। हालांकि धन्यवाद। – user1071914

0

सबसे पहले यदि आप स्वच्छ निर्माण करने के लिए सर्वोत्तम अभ्यास बनाने के लिए जेनकींस का उपयोग कर रहे हैं जिसका मतलब है कि प्रति निर्माण स्थानीय भंडार का उपयोग करना है और सर्वर की वैश्विक नहीं है। इसके अलावा ऐसा लगता है कि आप अपनी कलाकृतियों को रिलीज़ करने के लिए रिलीज प्लगइन का उपयोग नहीं करते हैं जो स्वचालित रूप से जांचता है कि क्या पोम में स्नैपशॉट होता है और कुछ होने पर असफल हो जाता है। इसके अलावा maven-dependency-plugin के माध्यम से स्थानीय भंडार को साफ करना संभव है। मेरे अनुभव के आधार पर मैंने बस एक ऐसा कार्य कॉन्फ़िगर किया है जो SNAPSHOT को हटा देता है जो एक महीने से अधिक पुराने हैं ...

0

लिनक्स पर कोशिश कर सकते हैं, तो आप इस आदेश का उपयोग कर सकते हैं: यह

  • फ़ोल्डर में नामित कुछ भी *-SNAPSHOT खोजें $HOME/.m2/repository/
  • और:

    find $HOME/.m2/repository/ \ 
        -name "*-SNAPSHOT" \ 
        -type d \ 
        -mtime +60 \ 
        -print \ 
        -prune \ 
        -exec rm -r "{}" \; 
    

    स्पष्टीकरण एक निर्देशिका होना चाहिए

  • और इसे पिछले 60 दिनों में संशोधित नहीं किया जाना चाहिए
  • जो आपने पाया उसे प्रिंट करें। यदि आप कमांड का परीक्षण करना चाहते हैं, तो
  • -exec फ़ोल्डर को हटा देगा, -prune फ़ोल्डर को बाद में फ़ोल्डर में प्रवेश करने का प्रयास न करने के लिए कहता है।
  • -exec फ़ोल्डर और फ़ाइलों को अंदर हटा देगा।