0

target/classesm2eclipse プラグインには、パッケージ化された jar を使用する代わりにアップストリームの依存関係のディレクトリを使用するように下流の Maven プロジェクトに指示するプロジェクト オプション「ワークスペース プロジェクトから依存関係を解決する」があります。mvn同じことをするように指示する方法はありますか?

たとえば、2 つのプロジェクトがfooありbar、 とbarが に依存しているfoo場合、コマンド ラインで をfoo実行する前にパッケージ化してインストールする必要がありbarます。

cd ~/foo
mvn package install
cd ~/bar
mvn prepare-package
java -cp target/classes:$(mvn -o -q -Dmdep.outputFile=/dev/stdout dependency:build-classpath) Bar

しかし、すべてのプロジェクトをパッケージ化することは避けたいと思います。1) 冗長な I/O が多く、2) Eclipse に保存してコマンド ラインから実行すると、すべてのプロジェクトを再度パッケージ化するのを忘れがちです。なぜ私の変更が機能しなかったのか疑問に思って時間を無駄にします.

コマンドがリポジトリの代わりにアンパックされたクラスを使用するpom.xmlように変更する方法はありますか?mvnmvn prepare-packagemvn install

4

1 に答える 1

0

次のように foo と bar をマルチモジュール プロジェクトに入れてみませんか。

PROJ
  + foo
  + bar

そして、そのような構造では、foo と bar を別々にビルドすることは想定されていません。PROJ レベルでビルドするだけで、すべて問題ありません。依存関係はリアクター内で解決されるため、明示的に 1 つずつインストールする必要はありません。

あなたが言及した「余分なIO」は保存されませんが、正直なところ、唯一の違いはJARを作成することだけで、実際には他のことが起こったのと比べて最小限です。

あなたの2番目の引数も当てはまりません。実際、コマンド ラインのターゲット ディレクトリと Eclipse を混在させてはなりません。Eclipse の多くの機能は、出力フォルダーの外部の変更に敏感です。あなたが言及したことを行うと(Eclipseに保存し、コマンドラインビルドで更新されたクラスファイルを取得することが期待されます)、コマンドラインビルドは(Eclipseの観点から)出力データを「破損」させ、Eclipseで問題を引き起こします。(そのため、代わりに出力フォルダーを分離する方法を考え出す人がいます:https://stackoverflow.com/a/54366009/34088

于 2012-07-31T04:45:06.860 に答える