2011-04-05 10 views
8

私はhudsonでautoVersionSubmodulesをtrueに設定してmavenリリースプラグインを使用しています。mavenリリースプラグインを使用してautoVersionSubmodulesをメジャーバージョンに変更する

マイナーバージョンではなくメジャーバージョンを増やす方法があるのだろうかと思います。

現在、バージョン1.1.0のスナップショットでは、次のバージョンは1.1.1のスナップショットに設定されていますが、理想的には1.2.0のスナップショットに変更したいと思います。

どのようにこれを達成するためのアイデアですか?

ありがとうございました。

答えて

5

maven release pluginは、リリースバージョンの値と次の開発バージョンの値を入力するように要求します。プロンプトを避けるためにこれらを定義することができます。通常はコマンドラインでmvn -DreleaseVersion=1.1.0 -DdevelopmentVersion=1.2.0-SNAPSHOTのようなものを設定します。

ただし、バージョンの選択を求めるメッセージが表示されない場合は、何かが選択されています。ハドソンのM2 Release Pluginを使用している場合は、バージョンを選択するオプションがあると思いますが、明示的に設定する方法を見つけるべきでしょう。あなたの特定の設定についてのより詳細な情報が役立ちます。

+0

おかげでザック。私はバージョンのプロンプトを表示したくないだけでなく、毎回releaseVersionとdevelopmentVersionを変更して変更する必要はありません。私はちょうどバージョンを自動的に増やす方法があるかどうかを見たいと思う。 -DautoVesrionSubmodulesを使用するとマイナーバージョンが増えますが、メジャーバージョンを増やす必要があります。私は1.1.0から1.2.0へ行きたい – Arya

+0

@Arya実際には '-DautoVersionSubmodules'は自動的にバージョンを選択しません。指定されたバージョンがすべてのモジュールに適用されていることを確認します(それ以外の場合は、それぞれにプロンプ​​トが表示されます)。私は繰り返す、 "何かがあなたのために選んでいる"。もしそれがmavenなら、私はそれがリリースプラグインではないと思います。あなたのハドソン構成に何かがあると思われます。 –

4

...プラグインを作成する方法がある場合は、マイナーバージョンではなくメジャーバージョン を増やしてください。

現在、バージョン1.1.0のスナップショットの次のバージョンは から1.1.1のスナップショットに設定されていますが、理想的には 1.2.0スナップショットに変更したいと思います。

ここで説明しているのは、maven-release-pluginが修正版を増やしていて、マイナーバージョンを増分したいということです。バージョンx.y.z[majorVersion].[minorVersion].[fixVersion]を意味します。

私は、これは以下のようにしている解決方法は:

  1. あなたが説明された方法であなたのpom.xml増分からそれをバージョンを選択し、ハドソン文字列としてdevelopmentVersionreleaseVersionを設定しますグルーヴィーなスクリプトを作成します。パラメーター。
  2. はあなたの仕事のワークスペース仕事に
  3. にハドソンに
  4. 場所のGroovyスクリプトをジョブを作成し、「システムのGroovyスクリプトを実行」ステップを構築する - ジョブセットでのGroovyスクリプト
  5. へのパスを提供"トップレベルのMavenターゲットを呼び出す"ビルドステップを実行し、developmentVersionreleaseVersionのプロパティを持つmaven releaseコマンドを呼び出します。

ステップ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} 

乾杯、あなたの答えのための
専制君主