web-dev-qa-db-ja.com

コマンドラインプロパティを取得してMavenプロパティを上書きする方法

一部の依存関係のバージョン番号がpomファイルの設定で指定された project version プロパティに依存しているpomファイルがあります。これをコマンドラインで上書きできますか?もしそうなら、どうですか?

ここに長い話があります:

現在、プロジェクトをmavenに移行中ですが、まだ完全ではありません。まだmavenでビルドされていないため、プロジェクトには依存関係があるモジュールが複数あります(これらはantを介してjarにビルドされます)。リリース時に、これらすべてのjarがビルドされ、親プロジェクトと同じバージョン番号が含まれるようにします。リリースの場合、2つのステップが実行されます(mavenを使用してすべてを取得できるまで)

  1. Jarは、正しいリリースバージョン(12.12.4.0)でantに組み込まれています。
  2. Mavenリリースプラグインは、プロジェクトをアーティファクトリポジトリにデプロイするために使用されます。

2番目のステップでは、コマンドライン引数を使用してリリースを指定します。

mvn release:prepare -DreleaseVersion=12.12.4.0 -DdevelopmentVersion=12.12.4.1-SNAPSHOT -Dtag=iv-12.12.4.0

指定したバージョンでpomファイルを更新してください。ただし、このコマンドを実行しても、pomファイル内のバージョン(12.12.4.0-SNAPSHOT)は引き続き使用されています。これは、「スナップショットの依存関係とプラグインの確認」ステップに失敗し、Mavenバージョンプロパティから使用されている12.12.4.0-SNAPSHOTバージョンがまだあるjarを解決する必要があります。

これにより、バージョンをコマンドラインで指定されたバージョンに解決するために、これをどのようにオーバーライドできるかという最初の質問に行きました。これを乗り越えることができる追加の質問は次のとおりです:このチェックの前にMavenリリースプラグインがpomファイルを更新できるようにする方法は?スナップショットチェックをスキップする方法(望ましくない)

Pomファイル内に上書き可能なプロパティを作成することもできますが、その場合はpomファイル内の2か所でバージョン番号を維持する必要があります。

考え?

20
Noremac

たとえば、コマンドラインからpomに直接パラメーターを入力します。

mvn clean install -Dtestng.version=6.3.1

例:

     <project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.test</groupId>
        <artifactId>test</artifactId>
        <version>1.0.0</version>
        <name>test</name>
        <properties>
                <testng.version>6.4</testng.version>
        </properties>

        <dependencies>
                <dependency>
                        <groupId>org.testng</groupId>
                        <artifactId>testng</artifactId>
                        <version>${testng.version}</version>
                        <scope>test</scope>
                </dependency>
        </dependencies>
</project>

正常に実行すると、testngバージョン6.4が使用されます。しかし、次のように実行すると:mvn clean install -Dtestng.version=6.3.1 testngバージョン6.3.1が使用されます。

参照 JenkinsでのMavenパラメータの設定

45
Andrzej Jozwik