2011-03-18 24 views
5

मैं वर्तमान में Maven tools for Project Dash पर काम कर रहा हूं। खुले मुद्दों में से एक गलतियों को संभालने का तरीका है।पैच के लिए मेवेन आर्टिफैक्ट संस्करण

मेवेन केंद्रीय कहते हैं: कुछ भी कभी भी प्रकाशित नहीं हुआ। ऐसा इसलिए है क्योंकि मैवेन कभी यह पता लगाने की कोशिश नहीं करता कि क्या एक रिलीज बदल गया है (एसएनएपीएसएचओटी के विपरीत)।

लेकिन मैं की, कहते हैं एक नया "रिहाई", ग्रहण 3.6.2 का हिस्सा बनाने के लिए हो सकता है। मुझे किस संस्करण संख्या का उपयोग करना चाहिए? 3.6.2.1, 3.6.2-1, 3.6.2_1, 3.6.2pl1? क्यूं कर?

उत्तर

9

सम्मेलन संस्करण संख्याओं के लिए major.minor.build है।

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

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

build फ़ंक्शन के कार्यान्वयन के दौरान वृद्धि हुई है, लेकिन कोई हस्ताक्षर जोड़े या हटा दिए गए हैं। उदाहरण के लिए, आपको एक बग मिला और इसे ठीक किया गया। ग्राहकों को शायद नए संस्करण में अपडेट करना चाहिए, लेकिन यदि यह काम नहीं करता है क्योंकि वे टूटे हुए व्यवहार पर निर्भर हैं, तो वे आसानी से डाउनग्रेड कर सकते हैं।

यहां मुश्किल समस्या यह है कि ऐसा लगता है कि आप किसी और द्वारा लिखे गए कोड को संशोधित और संशोधित कर रहे हैं। यहां पर सम्मेलन, जैसा कि मैंने इसे देखा है, संस्करण संख्या को -yourname-version या बस - version के साथ पोस्टफिक्स करना है। उदाहरण के लिए, linux-image-2.6.28-27 उबंटू कर्नेल छवि का संभावित नाम है।

चूंकि मैवेन आर्टिफैक्ट निर्देशांक के बीच अंतर करने के लिए डैश का उपयोग करता है, हालांकि, मैं इसे भ्रमित करने से बचने के लिए .version जोड़ने के लिए (बहुत लंबे समय तक, स्पष्ट रूप से) अनुशंसा करता हूं। तो इस मामले में 3.6.2.1

+1

अच्छा जवाब। मैं अर्थपूर्ण संस्करण के बारे में पढ़ने की भी सिफारिश करता हूं: http://semver.org/ – Nicholas

0

Maven परियोजना संस्करणों this की तरह निर्दिष्ट हैं।

<major version>.<minor version>.<incremental version>-<qualifier> 

आप संस्करण संख्या आप एक क्वालीफायर लिए देख रहे हैं बदलने के लिए नहीं करना चाहती है। मुझे नहीं पता कि क्वालीफायर के नाम के लिए सामान्य सिफारिश है या नहीं। वसंत लोग उदा। जैसे this

2.5.6.SEC01 
2.5.6.SR02 
3.0.0.M3 

वे क्वालीफायर अलग करने के हाइफन/पानी का छींटा संकेतन का उपयोग नहीं किया था कुछ किया।

आप जो भी करते हैं, आपको संस्करणों के क्रम के बारे में सावधान रहना होगा! मैंने जो पहला लिंक जोड़ा है उसे देखें।

अद्यतन: इसके अलावा हाल ही में परिवर्तन/परिवर्धन के लिए @krzyk टिप्पणी पर एक नजर है।

+1

अभी http://www.mojohaus.org/versions-maven-plugin/version-rules.html नियमों के अनुसार नियम हैं । <माइनरवर्सन [>। <वृद्धिशील संस्करण]] [> - ' –

+0

@krzyk परिवर्तन का उल्लेख करने के लिए धन्यवाद। मेरे उत्तरों को इस तरह छोड़ देगा और आपकी टिप्पणी में शामिल नहीं होगा। – FrVaBe

0

इसका कारण यह है Maven कभी नहीं पता लगाएँ कि क्या एक रिलीज बदल

कि मेरी राय नहीं मूल कारण में है है आंकड़ा करने की कोशिश करता है। भविष्य में भरोसेमंद निर्माण का कारण है। आप अपने पोम में संस्करणों को परिभाषित करते हैं और यही वह है। किसी केंद्रीय Maven से कलाकृतियों को दूर या एक मौजूदा विरूपण साक्ष्य को बदलने बदतर बन जाएगा, तो आपको लगता है कि अपने निर्माण भविष्य में काम करेंगे यकीन नहीं हो सकता है ... या एक पुराने निर्माण काम करेगा।

संस्करण संख्या आपके ऊपर है ... मैं 3.6.2.1 का उपयोग करने का सुझाव दूंगा।