1

Apache ActiveMQ Artemis プロジェクト ( https://github.com/apache/activemq-artemis ) の git リポジトリのクローンを作成し、次のように入力しました。

mvn -Ptests test -pl :integration-tests

次のようなログ メッセージを見て驚いた

...
Downloading: http://repository.apache.org/snapshots/org/apache/activemq/artemis-selector/1.4.0-SNAPSHOT/artemis-selector-1.4.0-20160625.030221-11.jar
Downloading: http://repository.apache.org/snapshots/org/apache/activemq/artemis-core-client/1.4.0-SNAPSHOT/artemis-core-client-1.4.0-20160625.030211-11.jar
...

egartemis-core-clientは最初にクローンした git リポジトリに含まれているので、maven はそこからビルドするだけだと思っていました。

そうすれば、コア クライアント ソースに変更を加えると、それらが統合テストによって検出されます。

代わりに、maven はリポジトリから jar をダウンロードしています。

質問: 常に git リポジトリにあるすべてのモジュールをビルドし、「真の」依存関係 (git リポジトリにないもの) のみをダウンロードするように maven を構成するにはどうすればよいですか?

4

1 に答える 1

2

メインプロジェクト、特にモジュールとモジュールpom.xmlを実際に定義するメインでMavenビルドを実行していません。artemis-selectorartemis-core-client

テストモジュールのみが定義されているテストとそのでMaven ビルドを実行しています。pom.xmlこれは、以前の pom ファイルを親として持つサイド/テスト プロジェクトですが、親モジュールの定義では何の役割も果たしません。したがって、依存関係はモジュールとしてではなく、Maven の依存関係として解決されます。

最初に前のプロジェクトを (経由で) インストールmvn clean installして、ローカルの Maven キャッシュでライブラリを利用できるようにし (したがって、ダウンロードはトリガーされません)、testsプロジェクトを実行します。


継承と集計の違いについては、公式ドキュメントを確認して、さらに明確にしてください。

スタック オーバーフローから、次のスレッドも興味深い可能性があります。

于 2016-06-26T12:18:10.440 に答える