2013-01-23 14 views
15

मेरे पास एक मेवेन pom.xml है, मैं प्रोजेक्ट का निर्माण करता हूं और जेनकींस के साथ प्रोजेक्ट को तैनात करता हूं।मेवेन: pom.xml में संस्करण गुणों को बदलें

लेकिन इससे पहले कि और निर्माण "रिलीज़ संस्करण" के बाद हम

उदाहरण के लिए मेरी संस्करण सेट की जरूरत है: मैं

<properties> 
    <version-own>0.0.21-SNAPSHOT</version-own> 
</properties> 

रिहाई मैं इस

की तरह सेट की जरूरत है इससे पहले कि pom.xml में है
<properties> 
    <version-own>0.0.25</version-own> 
</properties> 

रिलीज के बाद मुझे इस

की तरह सेट करने की आवश्यकता है 210

यह कैसे किया जा सकता है?

+3

स्टार्टर्स के लिए, 0.0.21-स्नैपशॉट इसकी रिलीज में 0.0.21 बनना चाहिए। फिर, रिलीज के बाद, आप अगली रिलीज में नंबर रोल करते हैं, और स्नैपशॉट, यानी 0.0.22-स्नैपशॉट जोड़ें, यह इंगित करने के लिए कि वर्तमान में यह विकास में है। ध्यान दें, ऐसा लगता है कि आप संख्या छोड़ रहे हैं, जो ठीक है, लेकिन मैंने इस उदाहरण में नहीं किया। – chad

उत्तर

6

शुरुआत के लिए, आप इसे हाथ से कर सकते हैं। यदि आपका निर्माण मैवेन कन्वेंशन का पालन करता है, तो आप शायद कुछ मैवेन प्लगइन्स का लाभ उठा सकते हैं जो संस्करण संख्याओं के प्रबंधन में मदद के लिए मौजूद हैं।

maven-versions-plugin संस्करण संख्याओं में मैन्युअल परिवर्तन स्वचालित करने में मदद करता है। रिलीज करने से पहले अपने पोम्स को ट्यून करने में मदद करने के लिए इसमें अच्छे सीएलआई कमांड हैं।

फिर maven-release-plugin है जो रिलीज़ काटने की पूरी प्रक्रिया को स्वचालित करता है। यह आपके स्नैपशॉट को रिलीज़ संस्करण में बदल देगा, फिर रिलीज बिल्ड के बाद इसे अगले स्नैपशॉट पर रोल करें। इस प्रक्रिया के दौरान यह स्रोत नियंत्रण में पोम्स के असतत संस्करण करता है।

फिर, मैवेन समुदाय के अधिक स्वचालित बिट्स में सफलता को देखने का रहस्य यह है कि क्या आपका निर्माण चीजों को मैवेन तरीके से कर रहा है या नहीं। हैक, अत्यधिक tweaked, गैर परंपरागत निर्माण आमतौर पर रिलीज प्लगइन के सफल उपयोग के लिए कई बाधाओं है।

+0

आप मुझे समझ में नहीं आया। परिवर्तन की आवश्यकता है।

 0.0.21-SNAPSHOT    com.test-release features-test-release ${version-own} 
user2004266

25

आप अपने खुद के संस्करण संपत्ति का उपयोग करने की जरूरत नहीं है, तो निम्नलिखित है कि आपके <project><version>0.0.21-SNAPSHOT</version></project> तत्व पर कार्यवाही करेंगे पर विचार करें:

mvn versions:set versions:commit -DnewVersion="0.0.25" 

कि आपके पोम को संशोधित करने और अपनी पसंद के संस्करण को समायोजित करेगा। संभवत: आपको अपने स्रोत कोड नियंत्रण भंडार के लिए यह परिवर्तन प्रतिबद्ध करने के लिए, इस के लिए चाहता हूँ एससीएम प्लगइन के एससीएम: चेकइन लक्ष्य सिर्फ ठीक काम करता है (यह मानते हुए आप चाहते हैं तो यह स्वचालित करने के लिए):

mvn scm:checkin -Dincludes=pom.xml -Dmessage="Setting version, preping for release." 

तो फिर तुम प्रदर्शन कर सकते हैं अपने रिलीज (मैं maven-release-plugin की अनुशंसा करता हूं), जिसके बाद आप अपना नया संस्करण सेट कर सकते हैं और इसे ऊपर के रूप में प्रतिबद्ध कर सकते हैं।

versions plugin अपने दोस्त है। उपर्युक्त स्क्रिप्टिंग में कुछ पैरामीटरयुक्त बिल्ड, या अधिमानतः जेनकींस के लिए ग्रोवी प्लगइन शामिल होगा जो आपको मेवेन-विशिष्ट बिल्ड वैरिएबल प्राप्त करने की अनुमति देता है।

+0

बदलने की आवश्यकता है। 0.0.21-स्नैपशॉट <निर्भरता> com.test रिलीज सुविधाओं परीक्षण रिलीज $ {संस्करण-खुद} user2004266

+1

शैतान के वकील को यहां बजाना: आप ' 0.0.21-SNAPSHOT' को केवल 0.0.21-S के लिए क्यों नहीं स्क्रैप कर सकते हैं NAPSHOT '? यदि आप ** की आवश्यकता है तो आप अभी भी '$ {project.version} '** के साथ संस्करण का संदर्भ दे सकते हैं, और आप संस्करण, रिलीज और एसएमएम प्लगइन्स के साथ ऊपर वर्णित पैटर्न का उपयोग कर सकते हैं। – Anew

+0

संस्करण-स्वयं निर्भरता संस्करण – user2004266

2

बिल्ड-हेल्पर प्लगइन regex प्रतिस्थापन का समर्थन करता है, और आवश्यकता होने पर संस्करण संख्याओं को भी पार्स कर सकता है। http://www.mojohaus.org/build-helper-maven-plugin/

0

आप इस comment को देखते हुए कि आप इस संस्करण का उपयोग कर रहे हैं निर्भरता प्रदान करने के लिए का वर्णन कर रहे हैं। maven-release-plugin आपको अपने लिए संस्करण प्रबंधित करने में मदद करेगा। तो उस प्लगइन को अपने pom.xml में प्रदान करें।

और मैन्युअल रूप से जारी है और विकास संस्करण उपलब्ध कराने के कदम के लिए, जो 2 स्ट्रिंग पैरामीटर होगा जेनकींस में एक नौकरी बनाएँ:
developmentVersion
releaseVersion
जोड़ें "उच्च-स्तरीय Maven लक्ष्य आह्वान" कदम का निर्माण निष्पादित करने के लिए (उदाहरण के लिए) प्रदर्शन के लिए जारी

clean release:clean release:prepare release:perform -DdevelopmentVersion=${developmentVersion} -DreleaseVersion=${releaseVersion} 

जब काम का निर्माण, यह दोनों developmentVersion और releaseVersion डालने के लिए संकेत देगा।

चीयर्स,
तानाशाह

5

आसानी से एक ही रास्ता है कि करने के लिए करने के लिए नहीं है। एक आदेश के साथ आप बदल सकते हैं, जो भी हिस्सा आप चाहते हैं:

और चिपकाने के लिए:

mvn build-helper:parse-version versions:set -DbuildNumber=555 '-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-${buildNumber}' 

स्पष्टता के लिए:

mvn build-helper:parse-version versions:set -DbuildNumber=555 
    '-DnewVersion= 
        ${parsedVersion.majorVersion} 
       .${parsedVersion.minorVersion} 
       .${parsedVersion.incrementalVersion} 
       -${buildNumber}' 

इस के साथ एक ही बार में संस्करणों अपडेट करने का तरीका एक संक्षिप्त उदाहरण है मूल्यों

1

निर्माण वहाँ parsedVersion.nextIncrementalVersion

की तरह कुछ है mvn build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} versions:commit

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