2012-04-18 5 views
0

の動的な仕様:Mavenの:私はMavenを学び、次の質問持っているし始めている依存関係

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

私はPOM

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

に指定された次の依存関係を持っているが、だから私は、私は別のバージョンを使用するビルドコマンドで指定したいと思います。 これを指定する方法はありますか?

私は、特定のブランチのシステムの最新のスナップショットに依存するJenkinsの統合ビルドを作成したいと考えています。そのスナップショットはまだmavenリポジトリには公開されていないので、Jenkinsでフェッチし、mvn buildの依存関係を指定したいと思います。

ありがとうございます!

POSSIBLE SOLUTION:MVNする呼び出すときに「-Dmy.lib.version = 1.0-SNAPSHOTでそれを$ {} my.lib.version建設を使用して指定することであると私は終わった何をこのように私が使用することができますJenkinsの統合のために、svnからの依存関係の任意のスナップショットバージョンを取得し、そのスナップショットバージョンを統合ビルドポンプに渡すことによってビルドします。

+0

動的依存関係はどうなっていますか?もう少し説明できますか? – khmarbaise

+0

@khmarbaise私は、Jenkinsで特定のブランチの最新の利用可能なスナップショットに依存する統合ビルドを作成したいと考えています。そのスナップショットはまだmavenリポジトリには公開されていないので、Jenkinsでフェッチし、mvn buildの依存関係を指定したいと思います。 – Hippopotamus

+0

最良の解決策は、そのような目的のためにSNAPSHOTバージョンを使用することです。 – khmarbaise

答えて

0

は$ {my.libを使用することです:あなたは、あなたがそれらを切り替えることがあり、いくつかのプロファイルを作成する場合

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

ので

例(Mavenの参考文献を参照)。私はJVMを使用して、svnからの依存関係の任意のスナップショットバージョンを取得し、それらのスナップショットバージョンを統合ビルドに供給することで、Jenkins統合ビルドに使用することができます。ポーランド

0

いいえ、あなたは動的に依存関係を変更することはできません。

+0

実際には、$ {my.lib}として書かれたpomに依存している場合は、-Dmy.lib.version = 1.0-SNAPSHOT(推奨)のように指定することができます。バージョン} – Hippopotamus

+0

あなたのビルドを再現できないものにします。それは私の意見ではないです。 – khmarbaise

3

Mavenは、 "動的に"指定されたプロパティ(例:group.ProjectComponent.ve)を使用することがあります。 rsion)のプロファイルを使用してください。私がなってしまった何

<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> 
+0

ありがとう! mvnへの依存関係の値をコマンドラインから提供する方法があるかどうかは、あなたが知っていますか?それとも、ポンポンを台無しにする必要がありますか? – Hippopotamus

+1

は、システムプロパティ "mvn clean test -Dmy.lib.version = 1.0-SNAPSHOT"を渡しますが、これを行うことはできますが、このプロパティを単に上書きするだけで、プロジェクトに依存性の任意のバージョンを使用させるのは簡単です。 –

+0

@Kalありがとう、まさに私がやることにしたことです。 – Hippopotamus

0

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

関連する問題