Why version matching doesn't work in Maven? -
यह मेरा pom.xml
है (इसे का टुकड़ा):
... & lt; निर्भरता & gt; & LT; ग्रुप & gt; org.hibernate & lt; / ग्रुप & gt; & LT; artifactId & gt; हाइबरनेट-entitymanager & lt; / artifactId & gt; & LT; संस्करण & gt; [3.0,) & lt; / संस्करण & gt; & Lt; / निर्भरता & gt; ...
यह वही है जो mvn
मुझसे कहता है:
[3.2.0 में कोई संस्करण नहीं मिल सका। CR2, 3.2.0.ga, 3.3.1.ga] से मेल खाने वाली सीमा [3.0,]
क्यों?
पुराने कोड <>> XYZga नामकरण योजना का उपयोग हाइबरनेट (नए जेबीस सम्मेलनों के लिए देखें) मैवेन के प्रारूप का पालन नहीं कर रहा है और संस्करण के साथ अच्छी तरह काम नहीं कर सकता है तुलना एल्गोरिथ्म का हवाला देते हुए:
Maven के मूल में वर्तमान कार्यान्वयन की उम्मीद है कि संस्करण संख्या में एक बहुत विशिष्ट प्रारूप होगा:
& lt; MajorVersion [& gt; । & Lt; माइनरवर्सियन [& gt; । & Lt; वृद्धिशील संस्करण]] [& gt; - & lt; BuildNumber | क्वालिफ़ायर] & gt;
जहां
मेजरवर्सन
,लघुवजन
,वृद्धिशील संस्करण
औरBuildNumber
सभी संख्यात्मक हैं और क्वालिफायर एक स्ट्रिंग है। यदि आपका संस्करण संख्या इस प्रारूप से मेल नहीं खाता है, तो संपूर्ण संस्करण संख्या को योग्यता माना जाता है।यदि आपके संस्करण संख्याएं इस योजना से मेल नहीं खाती हैं, तो आपको समस्याएं आ सकती हैं संस्करण रेंज (दुर्भाग्यवश संस्करण संस्करण और आपकी संस्करण नंबर वाली योजनाओं के साथ आपकी समस्याओं में आपकी मदद करने के लिए संस्करण-मेवेन-प्लगइन कुछ भी नहीं कर सकता है ... अच्छी तरह से आप अपने संस्करण की जगह ले सकते हैं
इस प्लग इन में लक्ष्यों को सॉर्ट करें, उदाहरण के लिए अपडेट-गुण (आप इन प्रकार की समस्याओं में मदद करने के लिए कुछ कर सकते हैं)
एल्गोरिथ्म को इन विवरणों में समझाया गया है:
डिफ़ॉल्ट विनिर्देश इस प्रकार से बना होना चाहिए:
& lt; प्रमुख & gt;। & Lt; minor & gt;। & Lt; संशोधन & gt; ([- & lt; qualififer & gt;] | [- & lt; बिल्ड & gt;])
कहां:
- क्वालीफायर सेशन ऑप्शन है
- कोई भी '0' निर्माण या संशोधन तत्व छोड़ा जा सकता है।
- केवल एक बिल्ड और क्वालीफायर दिया जा सकता है (ध्यान दें कि टाइमस्टैंप वाले क्वालीफायर में एक बिल्ड नंबर शामिल है, लेकिन यह वही नहीं है)
- बिल्ड नंबर जो मूल आर्टिफैक्ट (जैसे, अक्सर आरपीएमएस के साथ किया जाता है) को पुनर्प्रेषित करता है
आदेश देने के लिए, जब तक कोई तत्व पाया नहीं जाता है, तब तक ऐसा किया जाता है:
- प्रमुख संस्करण की संख्यात्मक तुलना
- मामूली संस्करण की संख्यात्मक तुलना
- यदि संशोधन मौजूद नहीं है, तो तुलना प्रयोजनों के लिए ".0" जोड़ें
- यदि क्वालीफायर मौजूद नहीं है, यह नया है अगर यह करता है
- क्वालीफायर की केस-असंवेदनशील स्ट्रिंग तुलना
- यह सुनिश्चित करता है कि टाइमस्टैम्प सही तरीके से हैं आदेश दिया है, और SNAPSHOT एक से नया है बराबर टाइमस्टैम्प
- यह भी सुनिश्चित करता है कि बीटा अल्फा के बाद आता है, आरसी
- यदि कोई क्वालीफायर नहीं है, और बिल्ड मौजूद नहीं है, तो "-0 जोड़ें "तुलना प्रयोजनों के लिए
- बिल्ड की संख्यात्मक तुलना
नोट भी एक आरपीएम वातावरण में उपयोगकर्ता से प्रस्तावित विस्तार:
संक्षेप में:
- 3.2.0.cr2, 3.2.0.ga, 3.3.1.ga को योग्यता के रूप में माना जाता है (यानी वे किसी भी तरह 0.0.0-3.2.0.cr2 आदि बन जाते हैं)
- यह जानने के लिए, आप शायद <<>> <0.0.0-3.0, श्रेणी का उपयोग करके मवेन को बेवकूफ़ बना सकते हैं।
- लेकिन यह वांछित (जैसे 2.x) से अधिक संस्करणों से मेल खाएगा, अतः अनपेक्षित दुष्प्रभावों से सावधान रहें।
असल में, मेरी सिफारिश संस्करण श्रेणियों का बिल्कुल उपयोग नहीं करना है, वे प्रतिलिपि प्रस्तुत करने योग्य निर्माण के लिए बस खराब हैं।
Comments
Post a Comment