0

マルチモジュール プロジェクトで mvn dependency:copy-dependencies を実行すると、mvn は jar が .m2/repo に既にインストールされていることを期待しているようです。何かが足りないのかもしれませんが、その意味
がわかりません... しかし、それは依存関係プラグインに固有のものであり(私は推測します...)、言及された質問には良い答えがありません.少なくとも私を助けるものはありません...

modA が modB に依存するマルチモデル プロジェクト
を実行したい

mvn dependency:copy-dependencies -am -pl modA

これにより、modA のすべての依存関係と、それが依存するすべてのモジュール (たとえば、modB も) がコピーされます。

問題は、.m2/repo に modB の jar が含まれていない場合、プラグインが失敗することです...なぜですか?
面白いことに、.m2/repo/ の適切な場所に空の「jar」ファイルを作成するだけで、プラグインが成功するのに十分なので、jar の内容を見ていないことを証明できますが、それはまだ所定の位置にある必要があります。えっ?...

最初の質問 - なぜですか?
2 番目の質問 - jar を実際に生成したり、それらに「触れたり」せずに問題を回避するにはどうすればよいですか? (私はたくさんあり、実用的ではありません...)

更新: OMG、貴重な部分を追加するのを忘れていたことに気付きました... modB をコピーしたくないので、実際にはそのアーティファクト ID をコマンドから除外したので、実際には次のようになりました。

mvn dependency:copy-dependencies -am -pl modA -DexcludeGroupIds=mod.b.group.id

私も試しました:

mvn dependency:copy-dependencies -am -pl modA -DexcludeArtifactIds=modB

したがって、それを行わなかった場合、プラグインがリポジトリで modB を検索することは完全に理にかなっていますが、modB が除外されているため、プラグインが modB.jar の存在を必要としないことを期待していました。
まあ、この質問はバグレポートにする必要があるかもしれません...

4

1 に答える 1

0

なんで?私はそれがコマンドが行うことになっていることだと思います-依存関係をコピーし、それらが存在しない場合は失敗します。プラグインは、アーティファクトの整合性には関係しません。

選択したグループ/プロジェクトでこれを回避する1つの方法は、プラグインのパラメーターexcludeGroupIdsとパラメーターを使用することです。excludeArtifactIds

于 2011-03-17T15:14:53.333 に答える