2017-10-23 5 views
2

https://www.cloudbees.com/blog/new-way-do-continuous-delivery-maven-and-jenkins-pipelineによると、pom.version.replaceを使ってpomに書き込む方法は?私はpom.version.replaceは何も変更しないと思いますが、どのように変更をpomに保存できますか? 私は現在のアップデートで失敗するこれを使用しています:writeMavenPomがpomに書き込まれていない

def pom = readMavenPom file: 'pom.xml' 
    def version = pom.version.replace("-SNAPSHOT", "") 
    writeMavenPom model: pom 

答えて

1

をあなたがする必要がありますpomオブジェクトを変更します。 replaceメソッドは文字列を変更せず、新しい文字列を返します。変更されたバージョンを既に保存しているので、pom.versionを上書きするだけです。 readMavenPomによって返されるオブジェクトはModelです。このクラスには、writeMavenPomのオブジェクトをファイルに書き込む前に、バージョンを変更するために使用できるsetVersionメソッドがあります。

だから、それは次のようになります。私は別の答えにコメントとして貼り付けられたリンクからインスピレーションをしている

def pom = readMavenPom file: 'pom.xml' 
def version = pom.version.replace("-SNAPSHOT", "") 
pom.version = version 
writeMavenPom model: pom 
+0

はい、それは私が私がNPMプロジェクトファイルを変更する必要があるときに問題が発生 – koller23

0

私はデータを保存するには、次の命令を追加する必要がありました:

pom.version = pom.version.replace("-SNAPSHOT", "") 

より良い選択肢がありますが

1

、あなたにもいくつかは、連続配信のための新しいMavenの機能を調べる可能性があります。つまり、あなたはバージョンとして(Mavenの3.2.1で始まる)今のプロパティを使用することができます。

<version>${releaseVersion}</version> 
... 
<properties> 
    <releaseVersion>0-SNAPSHOT</releaseVersion> <!-- sane default --> 
</properties> 

だから、あなただけの-Dパラメータとしてビルド中にご希望のバージョンを渡すことができます。

mvn clean package -DreleaseVersion=1.2.3-45 

参照してください。詳細な議論のためにここに:https://axelfontaine.com/blog/dead-burried.html

+0

をやったことだった、あまりにも – koller23

+0

@ koller23あなたの問題は編集よりも複雑である場合Maven POM、おそらく質問を編集したり、新しい質問を追加したりするべきでしょう。 MavenとNPMのビルドは、技術的には共通点がありません(ワークフローの考え方は非常に似ていますが)。 –

1

maven versions pluginを使用することをお勧めします。

Ypuは、このコマンドで-snapshotを削除することができます

mvn versions:set -DremoveSnapshot 
+0

Okres、theresもNPMプロジェクトファイルなら何をすればいいですか? – koller23

+0

NPMにSNAPSHOTタグを追加するのは良い習慣ではありません。あなたのpom.xmlがNPMプロジェクト用ではないと仮定します。 –

関連する問題