web-dev-qa-db-ja.com

pomのプロジェクトバージョンから-SNAPSHOTを削除する

私は次のGAVのポンを持っています

<groupId>com.company.services</groupId>
<artifactId>test-branch-2</artifactId>
<version>1.0.21-SNAPSHOT</version>

削除したい-SNAPSHOTこれからバッチモードでmavenを使用して、Jenkinsでそれを行うことができ、手動で何かを指定する必要はありません。

Version:setのドキュメントを確認しましたが、すべてのオプションでインタラクティブなプロンプトが表示され、バージョンの名前を入力するように求められます。

私はリリースプラグインではなく、バージョンプラグインを好みます。

25
Jepper

バージョンMavenプラグインのバージョン2.10以降、次のように簡単に実行できます。

mvn versions:set -DremoveSnapshot
40
Rinke

(何らかの理由で)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を接頭辞として持つ一連のプロパティに設定します。 majorVersionminorVersionincrementalVersionをサフィックスとして使用(ドキュメントを確認してください。classifierおよびbuildNumberも使用できます)。したがって、その実行後、POMで_${parsedVersion.majorVersion}_などのプロパティを使用できます。
  • _versions-maven-plugin_、 set ゴールは、これらのプロパティを使用して、実際に必要な新しいバージョンを構築します(この場合、SNAPSHOTを削除します。これは、_${parsedVersion.classifier}_プロパティ)。
  • 最後に、_versions-maven-plugin_、 commit ゴールはこれらの変更を有効にします。
11
A_Di-Matteo

以下を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>を追加できます。

3
Rinke

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-SNAPSHOT1.0.0.0pom.xmlに置き換えられます。

3
mzc