बनाता है मैं अपनी परियोजना में SNAPSHOT निर्भरताओं पर भरोसा करते हुए हेमेटिक बिल्डों को हासिल करने का प्रयास कर रहा हूं।हेर्मेटिक मेवेन बनाना
उदाहरण के प्रयोजनों के लिए, मैं एक परियोजना है जो इस तरह की एक निर्भरता संरचना है है कहते हैं: स्थानीय स्तर पर जो कुछ से संबंधित है के लिए
┌ other-1.2-SNAPSHOT
mine-1.2.3 ──┤
└ thing-3.1-SNAPSHOT ── gizmo-6.1.3-SNAPSHOT
मैं करना चाहते हैं क्या सभी स्नैपशॉट निर्भरता को हल है मेरी वर्तमान संस्करण और फिर उनको मेरे नेक्सस के रिलीज रिपोजिटरी में रिलीज़ के रूप में तैनात करें। इन सभी निर्भरताओं में आंतरिक नहीं है इसलिए मैं बस प्रत्येक पर एक रिलीज नहीं कर सकता।
तो, इस उदाहरण में, other-1.2-SNAPSHOT
other-1.2-mine-1.2.3
और thing-3.1-SNAPSHOT
जैसे कुछ बन जाएगा thing-3.1-mine-1.2.3
बन जाएगा। यह पाइथन की लगभग 60 लाइनों में अपेक्षाकृत मामूली है।
समस्या, तथापि, ठोस संस्करणों के लिए संक्रमणीय SNAPSHOT को हल करने में है। इसलिए मुझे gizmo-6.1.3-SNAPSHOT
को gizmo-6.1.3-mine.1.2.3
में कनवर्ट करने की आवश्यकता है और thing-3.1-mine-1.2.3
इस पर निर्भर है।
यह केवल एक उदाहरण है जिसमें मैं चाहता हूं कि प्राप्त करने के लिए। लक्ष्य यह है कि सड़क के नीचे एक या दो साल में मैं संस्करण 1.2.3 के लिए अपनी रिलीज शाखा की जांच कर सकता हूं और mvn clean package
या लंबे समय से चलने वाले SNAPSHOT निर्भरताओं को हल करने के बारे में चिंता किए बिना पसंद कर सकता हूं।
यह महत्वपूर्ण है कि यह शाखा संकलित हो और असेंबली प्लगइन की jar-and-dependencies
कार्यक्षमता जैसी किसी भी चीज़ का उपयोग करके सभी निर्भरताओं को न केवल बनाए रखें। मैं संभावित रूप से स्रोत फ़ाइलों को संशोधित करने और एक और रिलीज बनाने में सक्षम होना चाहता हूं (उदा।, हॉटफिक्स को लागू करना)।
तो,
- इस उपलब्ध है कि एक पुनरावर्ती फैशन में स्नैपशॉट निर्भरता कन्वर्ट करने के लिए ठोस होने के लिए सक्षम हो जाएगा ऐसा कुछ है?
- क्या कोई प्लगइन है जो आपके लिए इस तरह की चीज का प्रबंधन करता है? रिलीज प्लगइन ने अपने
branch
लक्ष्य पर कुछ कॉन्फ़िगरेशन विकल्पों के साथ वादा किया था, लेकिन यह बाहरी डिप्टी को उस डिग्री तक हल नहीं करता है जो मैं चाहता हूं। - हेमेटिक मेवेन बनाने के लिए अन्य तकनीकें उपलब्ध हैं?
एक एंटी मैवेन हैक की तरह लगता है। मेवेन में, बुनियादी मौलिक नियमों में से एक है ** कॉन्फ़िगरेशन पर कन्वेंशन **। यदि निर्भरताएं स्वयं द्वारा बनाई गई हैं, तो आपको स्वयं को स्नैपशॉट/रिलीज संस्करण का प्रबंधन/उपयोग करना चाहिए। अगर वे कहीं और से हैं, तो आपको हमेशा नवीनतम रिलीज संस्करण (स्नैपशॉट संस्करण नहीं) का उपयोग करना चाहिए। [मेवेन पूर्ण संदर्भ - खंड 3.3.1] में एक दूसरा रूप लें (http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-pom-syntax.html#pom-reationships -सेक्ट-संस्करण) और देखें कि क्यों मैनेन में स्नैपशॉट का उपयोग किया जाता है। – yorkw
मैवेन के मूलभूत सिद्धांतों को मैं पूरी तरह से समझता हूं। हालांकि, मैं वास्तविक दुनिया में समय सीमा और तीसरे पक्ष के पुस्तकालयों के साथ रहता हूं जो अविश्वसनीय रूप से उपयोगी हैं और फिर भी विस्तारित अवधि के लिए स्नैपशॉट संस्करणों पर बैठते हैं। जेसन वैन ज़िल, जिसे आप जानते हो, यहां तक कि रिलीज के आसपास एक प्रक्रिया-भारी प्रणाली की धारणा भी स्वीकार करती है, यह एक बड़ी गलती थी (और टेस्ला के साथ बदल रही है)। हमारे द्वारा उपयोग की जाने वाली सभी परियोजनाओं के आंतरिक कांटे को बनाए रखने के लिए, मैं जो कर रहा हूं वह वास्तव में सबसे अधिक होगा और वास्तव में बेहतर होगा। –
असली दुनिया में भी कुछ कारणों को ध्यान में रखा जाना चाहिए। आप यहां सिस्टम से लड़ रहे हैं। जैसा कि आपने बताया है कि स्नैपशॉट्स लंबे समय तक नहीं जीते हैं - भले ही आप आर्टिफैक्ट रिज़ॉल्यूशन के लिए भरोसा करने के लिए समय-मुद्रित स्नैपशॉट का उपयोग कर रहे हों। मेरा दृष्टिकोण निर्भरता का उपयोग करेगा और सभी कलाकृतियों को पुनः प्राप्त करने के लिए प्लगइन को तैनात करेगा और ज्ञात स्नैपशॉट निर्भरताओं को एक स्क्रिप्ट या कुछ स्वयं निर्मित मेवेन प्लगइन का उपयोग कर अपने मैवेन रेपो में तैनात करेगा। हो सकता है कि अन्य गिज्मोस से बात करने में भी मदद मिलती है: यदि वे अपने कलाकृतियों के बीटा संस्करणों को जारी कर सकते हैं तो आप उन पर भरोसा कर सकते हैं जो बिना किसी गड़बड़ के हैं। – wemu