ध्यान दें:
यह जवाब मावेन 2 पर ही लागू होता है! उल्लेख किया LATEST
और RELEASE
metaversions 6 साल पहले Maven 3 में "प्रतिलिपि प्रस्तुत करने योग्य बिल्ड के लिए" गिरा दिया गया है। कृपया इस मावेन 3 आज्ञाकारी समाधान का संदर्भ लें ।
यदि आप हमेशा नवीनतम संस्करण का उपयोग करना चाहते हैं, तो मावेन के पास दो खोजशब्द हैं जिन्हें आप संस्करण श्रेणियों के विकल्प के रूप में उपयोग कर सकते हैं। आपको इन विकल्पों का उपयोग सावधानी से करना चाहिए क्योंकि अब आप उपयोग किए जा रहे प्लगइन्स / निर्भरता के नियंत्रण में नहीं हैं।
जब आप एक प्लगइन या एक निर्भरता पर निर्भर करते हैं, तो आप LATEST या RELEASE के संस्करण मान का उपयोग कर सकते हैं। नवीनतम एक विशेष विरूपण साक्ष्य के नवीनतम जारी या स्नैपशॉट संस्करण को संदर्भित करता है, जो हाल ही में एक विशेष भंडार में तैनात विरूपण साक्ष्य है। कृपया अंतिम रिपॉजिटरी में गैर-स्नैपशॉट रिलीज़ को संदर्भित करता है। सामान्य तौर पर, यह सॉफ्टवेयर डिजाइन करने के लिए सबसे अच्छा अभ्यास नहीं है जो किसी विरूपण साक्ष्य के गैर-विशिष्ट संस्करण पर निर्भर करता है। यदि आप सॉफ़्टवेयर विकसित कर रहे हैं, तो आप एक सुविधा के रूप में RELEASE या LATEST का उपयोग करना चाह सकते हैं ताकि तृतीय-पक्ष लायब्रेरी के नए रिलीज़ होने पर आपको संस्करण संख्याओं को अपडेट न करना पड़े। जब आप सॉफ़्टवेयर जारी करते हैं, तो आपको हमेशा यह सुनिश्चित करना चाहिए कि आपकी परियोजना आपके निर्माण की संभावना को कम करने के लिए विशिष्ट संस्करणों पर निर्भर करती है या आपके नियंत्रण में नहीं होने वाले सॉफ़्टवेयर रिलीज़ से प्रभावित हो रही है।
देखें Maven पुस्तक के पोम सिंटेक्स अनुभाग अधिक जानकारी के लिए। या डिपेंडेंसी वर्जन रेंज पर इस डॉक को देखें , जहां:
- एक वर्ग ब्रैकेट (
[
& ]
) का अर्थ है "बंद" (समावेशी)।
- एक कोष्ठक (
(
& )
) का अर्थ है "खुला" (अनन्य)।
यहाँ विभिन्न विकल्पों का उदाहरण दिया गया है। मावेन भंडार में, com.foo:my-foo में निम्नलिखित मेटाडेटा है:
<?xml version="1.0" encoding="UTF-8"?><metadata>
<groupId>com.foo</groupId>
<artifactId>my-foo</artifactId>
<version>2.0.0</version>
<versioning>
<release>1.1.1</release>
<versions>
<version>1.0</version>
<version>1.0.1</version>
<version>1.1</version>
<version>1.1.1</version>
<version>2.0.0</version>
</versions>
<lastUpdated>20090722140000</lastUpdated>
</versioning>
</metadata>
यदि उस विरूपण साक्ष्य पर निर्भरता की आवश्यकता होती है, तो आपके पास निम्नलिखित विकल्प हैं (अन्य संस्करण श्रेणियां निश्चित रूप से निर्दिष्ट की जा सकती हैं, बस यहां प्रासंगिक विवरण दिखा रहे हैं):
एक सटीक संस्करण घोषित करें (हमेशा 1.0.1 के लिए हल होगा):
<version>[1.0.1]</version>
एक स्पष्ट संस्करण घोषित करें (हमेशा हमेशा के लिए संकल्प लेंगे जब तक कि कोई टक्कर नहीं होती है, जब मावेन एक मिलान संस्करण का चयन करेगा):
<version>1.0.1</version>
सभी 1.x के लिए एक संस्करण रेंज घोषित करें (वर्तमान में 1.1.1 पर हल होगा):
<version>[1.0.0,2.0.0)</version>
एक ओपन एंडेड वर्जन रेंज घोषित करें (2.0.0 पर हल होगा):
<version>[1.0.0,)</version>
संस्करण को नवीनतम के रूप में घोषित करें (2.0.0 पर हल होगा) (मावेन 3.x से हटा दिया गया)
<version>LATEST</version>
संस्करण को RELEASE के रूप में घोषित करें (1.1.1 पर हल होगा) (maven 3.x से हटाया गया):
<version>RELEASE</version>
ध्यान दें कि डिफ़ॉल्ट रूप से आपकी स्वयं की तैनाती मावेन मेटाडेटा में "नवीनतम" प्रविष्टि को अपडेट करेगी, लेकिन "रिलीज़" प्रविष्टि को अपडेट करने के लिए, आपको मावेन सुपर पीओएम से "रिलीज़-प्रोफाइल" को सक्रिय करने की आवश्यकता है । आप इसे "-Prelease-profile" या "-DformformRelease = true" के साथ कर सकते हैं
यह जोर देने योग्य है कि मावेन को निर्भरता संस्करणों (नवीनतम, संस्करण और संस्करण श्रेणियों) को लेने की अनुमति मिलती है, जिससे आप समय के मुद्दों को बनाने के लिए खुला छोड़ सकते हैं, क्योंकि बाद के संस्करणों में अलग-अलग व्यवहार हो सकते हैं (उदाहरण के लिए निर्भरता प्लगइन ने पहले डिफ़ॉल्ट रूप से लिया है। सत्य से असत्य से, भ्रामक परिणामों से)।
इसलिए आम तौर पर रिलीज में सटीक संस्करणों को परिभाषित करना एक अच्छा विचार है। जैसा कि टिम का उत्तर बताता है, मावेन-संस्करण-प्लगइन निर्भरता संस्करणों को अद्यतन करने के लिए एक उपयोगी उपकरण है, विशेष रूप से संस्करण: उपयोग-नवीनतम-संस्करण और संस्करण: उपयोग-नवीनतम-रिलीज़ लक्ष्य।