2012-07-13 8 views
8

mvn रिहाई बैच मोड में रिलीज़ संस्करण के लिए अद्यतन स्नैपशॉट संस्करण तैयार करते हैं। बैच मोड में ऐसा करने का कोई तरीका है ताकि मैवेन स्वचालित रूप से संबंधित रिलीज़ का उपयोग कर सके। यानी यदि निर्भरता 1.0.0-स्नैपशॉट है तो यह स्वचालित रूप से इस निर्भरता को 1.0.0 रिलीज़ में अपडेट कर देगा?Maven कर सकते हैं जारी: तैयार</p> <p>यह लगातार स्नैपशॉट निर्भरता को हल करने के लिए मुझे पूछते हैं:

[INFO] Checking dependencies and plugins for snapshots ... 
There are still some remaining snapshot dependencies.: Do you want to resolve them now?  (yes/no) no: : yes 
Dependency type to resolve,: specify the selection number (0:All 1:Project Dependencies 2:Plugins 3:Reports 4:Extensions): (0/1/2/3) 1: : 1 
Resolve Project Dependency Snapshots.: 'com.my.project' set to release? (yes/no) yes: : yes 
What is the next development version? (0.0.2-SNAPSHOT) 0.0.2-SNAPSHOT: : 0.0.2-SNAPSHOT 
+0

क्या आपने एमवीएन के बैच-मोड का उपयोग करने की कोशिश की है? – khmarbaise

+0

या तो मदद नहीं करेगा। – khmarbaise

उत्तर

5

आप versions-maven-plugin रिलीज होने से पहले के माध्यम से स्नैपशॉट है की अद्यतन कर सकते हैं।

+0

इस उद्देश्य के लिए मुझे एक ही प्लगइन (संस्करण-मेवेन-प्लगइन 2.2) का सामना करना पड़ रहा है। लेकिन, किसी कारण से, यह काम नहीं कर रहा है। मैं बस उपयोग कर रहा हूं - संस्करण: उपयोग-रिलीज और मेरी परियोजना का प्रारंभिक संस्करण 1.0.0-स्नैपशॉट है। इसके लिए कोई समाधान? धन्यवाद!! –

3

यदि आपकी निर्भरता आपके लिए एक प्रोग्राम है और इसकी लाइफसाइक्ल उस रिलीज से जुड़ा हुआ है जिसे आप रिलीज़ करने का प्रयास करते हैं, तो आप एक मल्टीमुड्यूल प्रोजेक्ट का उपयोग करने के बारे में सोच सकते हैं: http://maven.apache.org/guides/mini/guide-multiple-modules.html। मेवेन रिलीज प्लगइन आपके सभी निर्भरता मॉड्यूल के लिए संस्करण अपडेट करेगा।

यदि नहीं, तो संभवतः आप ऐसा कुछ कर रहे हैं जो आपको नहीं करना चाहिए। 1.0.0-SNAPSHOT को 1.0.0 में बदलना यह सुनिश्चित नहीं करता है कि आप ऐप काम करना जारी रखेंगे। तो यह नहीं मानता कि मेवेन चाहिए!

आगे विचार

Maven रिहाई प्लगइन जांच करता है कि आप एक स्नैपशॉट निर्भरता का उपयोग कर रहे हैं, क्योंकि स्नैपशॉट परिभाषा के अनुसार अस्थिर vesions हैं। यह समय के साथ बदल सकता है। इसका मतलब है कि आज जो काम कर रहा था वह कल काम नहीं कर सकता है।

रिहाई का मतलब है कि आपका संस्करण स्थिर है, और निर्माण किसी भी बदलाव के बिना किसी भी समय पुन: पेश किया जा सकता है। स्नैपशॉट संस्करण का उपयोग करके, यह दावा गलत हो गया है।

तो,

8

ध्यान दें कि आप Maven allowTimestampedSnapshots का उपयोग करके जाँच स्नैपशॉट निर्भरता उपेक्षा कॉन्फ़िगर कर सकते हैं, Maven रिलीज-प्लगइन प्रलेखन के अनुसार:

allowTimestampedSnapshots:

अनुमति दी जाए या टाइमस्टैम्पड स्नैपशॉट निर्भरता। किसी भी स्नैपशॉट को खोजने में असफल होना डिफ़ॉल्ट है।

  • प्रकार: बूलियन
  • के बाद से: 2.0 बीटा 7
  • आवश्यक है: नहीं
  • अभिव्यक्ति: $ {ignoreSnapshots}
  • डिफ़ॉल्ट: झूठी

या बस नीचे दिए गए आदेश को चलाएं:

mvn रिहाई: -DignoreSnapshots तैयार = सच

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

एक और शब्द में, निर्भरता संकल्प एक ऐसा कार्य नहीं है जो रिलीज चरण में किया जाना चाहिए, इसके अलावा, यह एक ऐसा कार्य नहीं है जिसे डेवलपर के ध्यान के बिना स्वचालित रूप से किया जाना चाहिए।

+0

पूरी तरह से आपसे सहमत हैं –

संबंधित मुद्दे