मैं Maven 2.2 का उपयोग कर रहा गठजोड़ के साथ नियोजित 1.4.0Maven बदल कलाकृतियों केवल
चलो कहते हैं कि मैं (इसी संस्करणों के साथ) इस तरह की एक पोम-संरचना है
parentproj, v1.0.1
- childproj1, v1.0.2
- childproj2, v1.0.7
childproj1 और childproj2 अलग प्रतिनिधित्व करते हैं आवेदन के कुछ हिस्सों (जैसे गुई और बैकएंड) और मैं अपने संस्करणों को अलग रखने में सक्षम होना चाहता हूं ताकि मैं गुई के नए संस्करण को जारी किए बिना बैकएंड का एक नया संस्करण जारी कर सकूं।
अब, Nexus के लिए यह सुविधाजनक हो सकता है इस संरचना को तैनात करने के लिए जाना parentproj और कहने के लिए
mvn तैनात -DperformRelease = सच
जो नेक्सस realease के भंडार के लिए सभी कलाकृतियों को तैनात करेगा । यह ठीक काम करता है पहली बार मैं यह तैनात है, लेकिन दूसरी बार मैं समस्याएं आ: मान लें कि मैं childproj1 के लिए एक अद्यतन बना देती हैं, ताकि हम अब निम्नलिखित संस्करण है कि:
parentproj, v1.0.1
- childproj1, v1.0.3
- childproj2, v1.0.7
इस स्थिति में नेक्सस नहीं होगा मुझे पेरेंटप्रोज़ से एमवीएन तैनाती करने दें, क्योंकि इसमें 1.0.7 संस्करण में पहले से ही childproj2 की एक प्रति है। नेक्सस कहेंगे "संसाधन, अवैध अनुरोध: आईडी = 'रिलीज' के साथ रिपोजिटरी कलाकृतियों को अद्यतन करने की अनुमति नहीं देता है।" यह ठीक है, मैं गलती से मौजूदा संस्करणों को अद्यतन नहीं करना चाहता हूं।
लेकिन मुझे लगता है कि मैं क्या करना चाहता हूं कि मैवेन को कुछ ऐसा बताने में सक्षम होना चाहिए जैसे "केवल उन कलाकृतियों को तैनात करें जिनके संस्करण रिलीज रिपोजिटरी में पहले से मौजूद नहीं हैं"।
क्या ऐसा करने का कोई तरीका है, या क्या मुझे प्रत्येक प्रोजेक्ट को स्वयं ही तैनात करना होगा?
धन्यवाद जॉन के जवाब देने के लिए धन्यवाद, हम उस दृष्टिकोण की जांच भी कर रहे हैं और यह अंत में लेने वाला बहुत अच्छा हो सकता है। मैं मानता हूं कि संस्करण स्थिरता बहुत मूल्य लाती है, लेकिन मुझे यह भी डर है कि एक बड़ी परियोजना के लिए निर्माण प्रक्रिया को बहुत ही फूला हुआ और समय लेने वाला हो सकता है यदि आपको किसी भी बदलाव के लिए पूरे प्लेटफॉर्म को अपग्रेड करना है। इस समस्या को हल करने के लिए संस्करण पर SNAPSHOT क्वालीफायर के (उचित और सही) उपयोग के सुझाव के लिए – David
+1। – whaley
मैं एक साथ संकलित और परीक्षण के बारे में अंतिम बयान से सहमत नहीं हूं। यदि आपने JAR पर संस्करण निर्भरता तय की है, तो मैवेन उन जेएआर का उपयोग करके आपके प्रोजेक्ट को संकलित करेगा ताकि आपको अभी भी SNAPSHOT या निश्चित संस्करण निर्भरताओं के साथ संकलित सबकुछ मिल जाएगा। परीक्षण के लिए, वास्तविक यूनिट-परीक्षणों के साथ, मुझे लगता है कि कक्षा निर्भरताओं, विशेष रूप से जार सीमाओं पर, मजाक किया जाना चाहिए। इसका मतलब यह होगा कि जब तक आपके पास तैनात ऐप के खिलाफ कुछ प्रकार का कार्यात्मक/एकीकरण परीक्षण नहीं होता है, तब तक आपके कोड का परीक्षण कभी नहीं किया जाता है, फिर SNAPSHOT या निश्चित संस्करण फिर से कोई फर्क नहीं पड़ता। माता-पिता बनाम एग्रीगेटर पीओएम को अलग करने के लिए –