私は次のGAVのポンを持っています
<groupId>com.company.services</groupId>
<artifactId>test-branch-2</artifactId>
<version>1.0.21-SNAPSHOT</version>
削除したい-SNAPSHOT
これからバッチモードでmavenを使用して、Jenkinsでそれを行うことができ、手動で何かを指定する必要はありません。
Version:setのドキュメントを確認しましたが、すべてのオプションでインタラクティブなプロンプトが表示され、バージョンの名前を入力するように求められます。
私はリリースプラグインではなく、バージョンプラグインを好みます。
バージョンMavenプラグインのバージョン2.10以降、次のように簡単に実行できます。
mvn versions:set -DremoveSnapshot
(何らかの理由で)Mavenリリースプラグインを本当に使用したくない場合は、Maven POMからSNAPSHOTサフィックス(分類子として処理)を標準的な方法で(つまり、スクリプトを使用せずに)ドロップすることに成功する方法を次に示します。カスタムmavenプラグインはありません)。
次のプロファイルがあるとします。
_<profile>
<id>drop-snapshot</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.11</version>
<executions>
<execution>
<id>parse-version</id>
<phase>validate</phase>
<goals>
<goal>parse-version</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>set-version</id>
<phase>validate</phase>
<goals>
<goal>set</goal>
</goals>
<configuration>
<newVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</newVersion>
</configuration>
</execution>
<execution>
<id>upgrade-pom</id>
<phase>validate</phase>
<goals>
<goal>commit</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
_
そして単に実行する:_mvn validate -Pdrop-snapshot
_
_0.0.1-SNAPSHOT
_から_0.0.1
_に渡されたサンプルpomのバージョン。
実際の仕組み:
build-helper-maven-plugin
_、 _parse-version
_ ゴールは、POMの現在のバージョンを解析し、デフォルトでparsedVersion
を接頭辞として持つ一連のプロパティに設定します。 majorVersion
、minorVersion
、incrementalVersion
をサフィックスとして使用(ドキュメントを確認してください。classifier
およびbuildNumber
も使用できます)。したがって、その実行後、POMで_${parsedVersion.majorVersion}
_などのプロパティを使用できます。versions-maven-plugin
_、 set
ゴールは、これらのプロパティを使用して、実際に必要な新しいバージョンを構築します(この場合、SNAPSHOTを削除します。これは、_${parsedVersion.classifier}
_プロパティ)。versions-maven-plugin
_、 commit
ゴールはこれらの変更を有効にします。以下をPOMに追加します。
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.11</version>
<configuration>
<name>newVersion</name>
<value>${project.version}</value>
<regex>-SNAPSHOT</regex>
<failIfNoMatch>false</failIfNoMatch>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
次のコマンドを使用して、プロジェクトのバージョンの-SNAPSHOT
部分を削除できます。
mvn build-helper:regex-property versions:set -N
-N
は、POMでモジュールが定義されている場合にのみルートプロジェクトを処理するようMavenに指示します。これは厳密には必要ありませんが、build-helper
プラグインがサブモジュールに対して不必要に実行されるのを防ぎます。 versions
プラグインは、どの場合でもルートプロジェクトでのみ実行され、すべてのモジュールを自動的にトラバースします。 maven-enforcer
プラグインのreactorModuleConvergence
ルールを使用して、マルチモジュールプロジェクトが正しく処理されるようにすることを検討してください。
mvn versions:commit
を実行すると、versions:set
によって生成されたバックアップPOMを削除できます。または、versions
プラグインの構成に<generateBackupPoms>false</generateBackupPoms>
を追加できます。
build-helper
を使用したA_Di-Matteoのアプローチに似ていますが、追加のプラグイン構成は必要ありません。
mvn build-helper:parse-version versions:set \
-DnewVersion=\${parsedVersion.majorVersion} \
.\${parsedVersion.minorVersion} \
.\${parsedVersion.incrementalVersion \
.\${parsedVersion.buildNumber} \
versions:commit
これにより、1.0.0.0-SNAPSHOT
が1.0.0.0
のpom.xml
に置き換えられます。