2012-07-19 14 views
7

मेरे पास एक मेवेन प्रोजेक्ट "कोर" है। प्रोजेक्ट के pom.xml में, संस्करण 0.1 है। मैं जेनकींस में पैरामीटरयुक्त बिल्ड का उपयोग करता हूं और टेक्स्ट पैरामीटर myNewVersion = 3.1 सेट करता हूं।मेवेन तैनाती मेवेन-संस्करण प्लगइन द्वारा सेट किए गए प्रोजेक्ट संस्करण को अनदेखा करता है

versions:set -DnewVersion=${myNewVersion} versions:commit deploy 

जब निर्माण किया जा रहा, Maven सही ढंग से "3.1" के लिए pom.xml में संस्करण अद्यतन करता है: मैं भी निम्नलिखित Maven लक्ष्य निर्धारित। हालांकि मैवेन तैनाती कार्य मेरे प्रोजेक्ट को "कोर-0.1" के रूप में तैनात करता है, संस्करण अभी भी 0.1 है। मेरे नेक्सस में संबंधित 0.1 डीआईआर में शामिल पोम फ़ाइल संस्करण संख्या "3.1" बताती है।

मैवेन संस्करण प्लगइन द्वारा निर्धारित सही संस्करण का उपयोग करने के लिए मेवेन तैनाती कार्य को मजबूर करने के लिए मैं क्या कर सकता हूं?

आपकी मदद के लिए बहुत बहुत धन्यवाद।

संपादित करें 1: मेरी आवश्यकताओं को स्पष्ट करने के लिए: पीओएम में परियोजना का संस्करण वास्तविक निर्माण संस्करण नहीं बताएगा। मैं अंतर्निहित सिस्टम और एपीआई के लिए अपने "कोर" प्रोजेक्ट की संगतता निर्धारित करने के लिए इसका उपयोग करता हूं। अधिक जानकारी में: प्रोजेक्ट "कोर" को जेनकिंस से "इंटरफ़ेस वर्जन = 3.1" या "इंटरफ़ेसवर्सन = 4.0" पैरामीटर मिलता है। यह निर्धारित करता है कि कौन सा संस्करण मेरी मूल परियोजना किसी अन्य "पुस्तकालय" बंडल पर निर्भरता के लिए उपयोग करता है।

अब, मेरे पास दो जेनकींस बिल्डिंग नौकरियां हैं, 3.1 के लिए एक और कोर प्रोजेक्ट की 4.0 लाइब्रेरी-प्रोजेक्ट निर्भरता के लिए एक है। प्रत्येक एसवीएन से एक ही प्रोजेक्ट कोड को चेक करता है, लेकिन "कोर" प्रोजेक्ट बनाने के लिए एक अलग संस्करण पैरामीटर पास करता है। मैं इस संस्करण संख्या को pom.xml में अपने प्रोजेक्ट के संस्करण संख्या के रूप में उपयोग करना चाहता हूं और मेरे जार की संस्करण संख्या को नेक्सस (यानी कोर-3.1.jar या कोर-4.0.jar) पर तैनात किया जा रहा है।

संपादित करें 2: मैं थोड़ा और आया हूं। मैं केवल पैरामीटर पैरामीटर का उपयोग करता हूं जिसे मैंने जेनकिन्स में मेरे पैरामीटरयुक्त बिल्ड सेक्शन में पैरामीटर के रूप में सेट किया है, जो कि पोम फ़ाइल में प्रोजेक्ट का वर्जन नंबर है। मेवेन ऐसा करने के बारे में चेतावनी देता है, लेकिन यह काम करता है। हालांकि, "कोर" के आधार पर मेरी सभी परियोजनाओं को अब निर्भरता संस्करण के रूप में "$ {myNewVersion}" निर्दिष्ट करने की आवश्यकता है।

तो मैं ऊपर बताए गए अनुसार, पोम फ़ाइल में संस्करण को सेट/ओवरराइट करने के लिए संस्करण-मेवेन-प्लगइन का उपयोग करने का प्रयास करता हूं। हालांकि, अब मुझे मैवेन तैनाती का उपयोग करते समय "एक्सेस अस्वीकृत" त्रुटि मिलती है। अगर मैं "संस्करण: set -DnewVersion = $ {myNewVersion} संस्करणों को हटा देता हूं: प्रतिबद्ध करें" और बस "तैनाती" का उपयोग करें, यह काम करता है। कोई संकेत यह कैसे हल करें?

+0

रिहाई प्लगइन क्यों उपयोग नहीं कर? – khmarbaise

+0

AFAIK संस्करण: प्रतिबद्धता वास्तव में एससीएम को प्रतिबद्ध नहीं है यह रिलीज द्वारा किया जा सकता है: प्रतिबद्ध ... – khmarbaise

+0

@khmarbaise द्वारा सुझाए गए अनुसार, M2_release प्लगइन आज़माएं। यह पीओएम संस्करण को स्वचालित करेगा और आपके एससीएम टैगिंग/लेबलिंग का ख्याल रखेगा: https://wiki.jenkins-ci.org/display/JENKINS/M2+Release+Plugin –

उत्तर

0

अपने pom.xml में, एक चर के रूप में संस्करण सेट इस तरह:

<version>${version}</version> 

फिर चलाने Maven

mvn deploy -Dversion=${myNewVersion} 
0

किसी को भी है कि एक ही समस्या है करने के लिए, मैं एक ही मुद्दा था, और यह versions प्लगइन से संबंधित था और Aggregator POM का उपयोग कर रहा था। संस्करणों में परिवर्तन बच्चों की परियोजनाओं के लिए प्रचारित नहीं किया गया था, जिनके माता-पिता को एग्रीगेटर पोम पर सेट नहीं किया गया है।

यह widening द्वारा निर्धारित किया जा सकता है versions:set जाना नामुमकिन है, उदाहरण के लिए:

versions:set -DgroupId=com.company.* -DartifactId=* -DnewVersion=${myNewVersion} versions:commit deploy 
संबंधित मुद्दे