22

一部の依存関係のバージョン番号が、pom ファイルの設定で指定されたプロジェクト バージョンプロパティに依存する 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 つの場所でバージョン番号を維持する必要があります。

考え?

4

2 に答える 2

55

たとえば、コマンドラインからパラメーターを 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.1testng バージョン 6.3.1 が使用されます。

Jenkins での Maven パラメータの設定を参照してください。

于 2012-12-04T18:56:57.083 に答える