0

私はMavenを学び始め、次の質問があります。

POMで指定された依存関係を使用する代わりに、Mavenプロジェクトをビルドするための依存関係を動的に指定したいのですが、それを行う方法はありますか?

したがって、POMで次の依存関係を指定していますが

...
<dependencies>
<dependency>
<groupId>group</groupId>
<artifactId>ProjectComponent</artifactId>
<version>1.0</version>
 </dependency>
...

別のバージョンを使用することをビルドコマンドで指定したいと思います。これを指定する方法はありますか?

アイデアは、特定のブランチで利用可能なシステムの最新のスナップショットに依存するJenkinsで統合ビルドを作成したいということです。そのスナップショットはまだMavenリポジトリにリリースされていないので、Jenkinsで取得して、mvnビルドの依存関係を指定したいと思います。

ありがとう!

考えられる解決策:私が最終的に得たのは、$ {my.lib.version}構造を使用し、mvnを呼び出すときに-Dmy.lib.version = 1.0-SNAPSHOT "で指定することです。したがって、Jenkins統合ビルドに使用できます依存関係の任意のスナップショットバージョンをsvnからフェッチし、それらのスナップショットバージョンを統合ビルドpomにフィードします。

4

4 に答える 4

3

Mavenは、プロファイルを使用して「動的に」指定されたプロパティ(例:group.ProjectComponent.version)を使用できます。

<dependencies>
    <dependency>
    <groupId>group</groupId>
    <artifactId>ProjectComponent</artifactId>
    <version>${group.ProjectComponent.version}</version>
</dependency>

したがって、いくつかのプロファイルを作成する場合は、それらを切り替えることができます(Mavenリファレンスを参照)

例:

<profile>
    <id>stable-builds</id>
    <properties>
        <group.ProjectComponent.version>1.0</group.ProjectComponent.version>
    </properties>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

<profile>
    <id>beta-builds</id>
    <properties>
        <group.ProjectComponent.version>2.0.Beta1</group.ProjectComponent.version>
    </properties>
    <activation>
        <activeByDefault>false</activeByDefault>
    </activation>
</profile>
于 2012-04-18T13:29:16.877 に答える
0

最終的には、$ {my.lib.version}構造を使用し、mvnを呼び出すときに-Dmy.lib.version = 1.0-SNAPSHOT "で指定します。したがって、任意のスナップショットをフェッチすることで、Jenkins統合ビルドに使用できます。 svnからの依存関係のバージョンと、それらのスナップショットバージョンを統合ビルドpomにフィードします。

于 2012-04-24T09:46:23.767 に答える
0

似たようなものを探していたときに、これに出くわしました。私の場合、同じアプリケーションコードが異なるスタックで再利用されています。つまり、データにアクセスするために異なる「ドライバー」を使用しています。ドライバーは同じインターフェースを実装しますが、それらは異なるアーティファクトから来ています。

于 2015-07-14T23:41:29.833 に答える
-1

いいえ、依存関係を動的に変更することはできません。さらに、それは意味がありません。再現性のあるビルドが必要だからです。

于 2012-04-18T13:03:55.627 に答える