2011-04-05 5 views
8

मैं हडसन पर मैवेन रिलीज प्लगइन का उपयोग कर रहा हूं ऑटोवर्सनसबमोड्यूल्स को स्वचालित रूप से पोम्स में विकास संस्करण को बढ़ाने के लिए सही पर सेट किया गया है।मेवेन रिलीज प्लगइन ऑटोविर्सनसबमोड्यूल का उपयोग करने के लिए मेजर वर्जन

मुझे आश्चर्य है कि प्लगइन को मामूली संस्करण के बजाय प्रमुख संस्करण में वृद्धि करने का कोई तरीका है या नहीं।

वर्तमान में जब मैं संस्करण 1.1.0-स्नैपशॉट पर हूं तो अगला संस्करण 1.1.1-स्नैपशॉट पर सेट है लेकिन आदर्श रूप में मैं इसे 1.2.0-स्नैपशॉट में बदलना चाहता हूं।

यह कैसे प्राप्त करें इस पर कोई विचार है?

धन्यवाद।

उत्तर

5

maven release plugin आपको रिलीज संस्करण के मूल्यों के लिए टैग करने के लिए और अगले विकास संस्करण के लिए भी संकेत देता है। आप इन्हें संकेत देने से बचने के लिए परिभाषित कर सकते हैं; आम तौर पर आप कमांड लाइन पर mvn -DreleaseVersion=1.1.0 -DdevelopmentVersion=1.2.0-SNAPSHOT जैसे कुछ सेट करेंगे।

हालांकि, अगर आपको संस्करण का चयन करने के लिए संकेत नहीं दिया जा रहा है, तो कुछ आपके लिए चुन रहा है। यदि आप हडसन के लिए एम 2 रिलीज प्लगइन का उपयोग कर रहे हैं तो मुझे लगता है कि इसमें आपके लिए संस्करण का चयन करने के विकल्प हैं, लेकिन आपको शायद उन्हें स्पष्ट रूप से कॉन्फ़िगर करने का एक तरीका मिलना चाहिए। आपके विशेष सेटअप के बारे में अधिक जानकारी मदद मिलेगी।

+0

धन्यवाद Zac। मैं नहीं चाहता कि यह संस्करण के लिए संकेत दे, लेकिन मैं हर बार रिलीज वर्जन और डेवलपमेंट वर्जन को बदलने और बदलने की आवश्यकता नहीं चाहता हूं। मैं सिर्फ यह देखना चाहता हूं कि संस्करण को स्वचालित रूप से बढ़ाने का कोई तरीका है या नहीं। -DautoVesrionSubmodules का उपयोग छोटे संस्करण को बढ़ाता है लेकिन मुझे प्रमुख संस्करण को बढ़ाने की आवश्यकता है। मैं 1.1.0 से 1.2.0 – Arya

+0

पर जाना चाहता हूं @ आर्य वास्तव में '-DautoVersionSubmodules' स्वचालित रूप से आपके लिए संस्करण नहीं चुनता है। यह केवल यह सुनिश्चित करता है कि निर्दिष्ट संस्करण सभी मॉड्यूल पर लागू होता है (अन्यथा आपको प्रत्येक के लिए संकेत दिया जाता है)। मैं दोहराता हूं, "कुछ आपके लिए चुन रहा है"। अगर यह मैवेन है, तो मुझे नहीं लगता कि यह रिलीज प्लगइन है। मुझे संदेह है कि आपके हडसन कॉन्फ़िगरेशन में ऐसा कुछ है। –

4

... अगर प्लगइन को मामूली संस्करण के बजाय प्रमुख संस्करण बढ़ाने का कोई तरीका है।

वर्तमान में जब मैं संस्करण 1.1.0-स्नैपशॉट पर हूं तो अगला संस्करण से 1.1.1-स्नैपशॉट सेट है लेकिन आदर्श रूप में मैं इसे 1.2.0-स्नैपशॉट में बदलना चाहता हूं।

क्या तुम यहाँ का वर्णन कर रहे हैं कि Maven रिलीज-प्लगइन आपके ठीक संस्करण incrementing है और आप लघु संस्करण वृद्धि चाहते हैं। जहां संस्करण x.y.z का अर्थ है [majorVersion].[minorVersion].[fixVersion]

तरह से मैं इस हल निम्नलिखित तरीके से है:

  1. ग्रूवी स्क्रिप्ट है कि यह आपके pom.xml वेतन वृद्धि ढंग आप समझा रहे हैं में से संस्करण ले जाएगा बनाएँ और developmentVersion और releaseVersion हडसन स्ट्रिंग के रूप में स्थापित मापदंडों।
  2. हडसन पर
  3. प्लेस ग्रूवी स्क्रिप्ट कार्य बनाएं अपनी नौकरी के कार्यक्षेत्र
  4. काम पर में स्थापित एक "प्रणाली ग्रूवी स्क्रिप्ट निष्पादित" कदम का निर्माण - काम सेट पर ग्रूवी स्क्रिप्ट
  5. के लिए पथ प्रदान एक "शीर्ष स्तरीय मेवेन लक्ष्यों को आमंत्रित करें" चरण बनाएं और developmentVersion और releaseVersion गुणों के साथ मेवेन रिलीज कमांड का आह्वान करें।

चरण 1:

import hudson.model.* 

createReleaseAndDevelopmentVersions(); 

def createReleaseAndDevelopmentVersions() { 
    def POM_LOCATION = build.parent.builds[0].properties.get("envVars")['WORKSPACE'] + "/pom.xml"; 
    def SNAPSHOT_PART = "-SNAPSHOT"; 
    def projectVersion = findOutCurrentVersion(POM_LOCATION); 
    def versionParts = projectVersion.tokenize('.'); 
    def mayorVersionPart = versionParts[0]; 
    def minorVersionPart = versionParts[1]; 
    def fixVersionPart = versionParts[2]; 
    def snapshotPartIndex = fixVersionPart.indexOf(SNAPSHOT_PART); 
    boolean hasSnapshotPart = snapshotPartIndex != -1; 
    if (hasSnapshotPart) { 
     fixVersionPart = fixVersionPart.substring(0, snapshotPartIndex); 
    } 
    int minorVersion = minorVersionPart.toInteger(); 
    int fixVersion = fixVersionPart.toInteger(); 
    def newFixVersion = 0; 
    def newMinorRelVersion; 
    def newMinorDevVersion; 
    if (hasSnapshotPart) { 
     newMinorRelVersion = minorVersion; 
     newMinorDevVersion = minorVersion + 1; 
    } else { 
     //TODO: either throw an exception here or change the newMinorRelVersion newMinorDevVersion appropriately to suite your use-cases: 
      //throw new IllegalArgumentException("The pom at location " + POM_LOCATION + " contains the version " + projectVersion + " which is not a snapshot version (missing " + SNAPSHOT_PART + "). This is a released version and nothing should happen to it!"); 
    } 
    def releaseVersion = mayorVersionPart + "." + newMinorRelVersion + "." + newFixVersion; 
    def developmentVersion = mayorVersionPart + "." + newMinorDevVersion + "." + newFixVersion + SNAPSHOT_PART; 
    createJenkinsVariablesAndAddToCurrentJob(releaseVersion, developmentVersion); 
} 

def findOutCurrentVersion (POM_LOCATION) { 
    def thr = Thread.currentThread() 
    def build = thr?.executable 
    def projectVersionParam = "projectVersion" 
    def resolver = build.buildVariableResolver 
    def projectVersionParamValue = resolver.resolve(projectVersionParam) 
    return projectVersionParamValue 
} 
def createJenkinsVariablesAndAddToCurrentJob (releaseVersion, developmentVersion) { 
    def pa = new ParametersAction([ 
     new StringParameterValue("releaseVersion", releaseVersion), new StringParameterValue("developmentVersion", developmentVersion) 
    ]) 
    Thread.currentThread().executable.addAction(pa) 
} 

चरण 5 (Maven आदेश):

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

चीयर्स,
तानाशाह आपके उत्तर के लिए

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