0

私はアーティファクトBに依存するプロジェクトAを持っています。私はBをいくつかハックし、Aでそれを見たいと思っています。私はローカルリポジトリでバージョンを使用するのではなく、Aをコマンドライン引数から明示的にmaven依存関係を解決するには?

cd A && mvn package -Ddependency.org.groupB.B.jar.path=path/to/my-hacked-B.jar 

が、それは可能ですか、私が持っている:私はこのように、Aの依存関係として私-ハッキング-B.jarを指定することができるソリューションを探していますB.

の私のハッキングバージョンを使用私のローカルリポジトリに変更されたBをインストールするには?

+0

あなたは、コマンドラインからこれを行うことができます。 http://stackoverflow.com/questions/1776496/a-simple-command-line-to-download-a-remote-maven2-artifa ct-to-the-local-reposito – cwu9T9

答えて

1

コマンドラインからの依存関係を解決する方法はありませんが、依存関係を外部から解決する方法があります。

2つのプロジェクトを集約する一時ラッパpom.xmlを作成しました。ローカルリポジトリに何もインストールすることなく動作します。

唯一の問題は、絶対パスを<module/>に使用できないことです。

あなたはプロパティでそれを行うことができます:)少し遅れてhttp://maven.apache.org/pom.html#Aggregation

2

これはコマンドラインでは実行できませんが、pom.xmlにはset the dependency scope to systemとなり、依存関係へのパスが提供されます。

<dependency> 
    <groupId>org.groupB</groupId> 
    <artifactId>B</artifactId> 
    <version>2.0</version> 
    <scope>system</scope> 
    <systemPath>${project.basedir}/path/to/hacked-B.jar</systemPath> 
</dependency> 
+0

ありがとうございました。しかし、私はpom.xmlが汚れていないようにしたい。 –

+0

@ user955091私はそう思っていましたが、残念ながらそれが私が知る唯一の方法です。 –

0

あなたはmvn clean installあなたのあなたは「ネットからダウンロードしたバージョンの上、お近くのMavenのリポジトリにverisonハッキング可能性があります。プロジェクトBのバージョンに依存しているバージョンが反映されていることを確認し、ではなくスナップショットのバージョンを指定する必要があります(または、より一般的には、mvn clean installがプロジェクトに必要なバージョンA; Pomを編集するかBのPomを編集するかは関係ありません)。

0

を参照してください:

<properties> 
    <org.groupB.B.scope>compile</org.groupB.B.scope> 
    <org.groupB.B.path></org.groupB.B.path> 
</properties> 

<dependency> 
    <groupId>org.groupB</groupId> 
    <artifactId>B</artifactId> 
    <version>2.0</version> 
    <scope>${org.groupB.B.scope}</scope> 
    <systemPath>${org.groupB.B.path}</systemPath> 
</dependency> 

、その後:

mvn package -Dorg.groupB.B.scope=system -Dorg.groupB.B.path=path/to/my-hacked-B.jar 
関連する問題