0

マルチモジュールの Maven プロジェクトで、2 つのモジュールcarhorse. どちらも JAR ファイルに依存していtransport.jarます。このファイルは、オンラインの Maven リポジトリでは利用できません。そのため、これらのモジュールをプロジェクト フォルダー構造のどこかにあるファイルに依存させる方法を見つける必要があります。

私の理解では、デフォルトの Maven ソリューションは、ローカル リポジトリに JAR ファイルを手動で登録することです。これは開発マシンでは機能しますが、ビルド サーバーでは機能しなくなり、各ビルドの前にローカル リポジトリがクリアされます。

私はオンラインでこれをオン/オフする方法をしばらく検索しており、いくつかの役立つものを見つけましたが、完全に機能するものはありません.

たとえば、一般的な答えは、 を使用してファイルに依存関係を追加することです<scope>system</scope>。ただし、そうするのは非常に悪い習慣だと主張する人がいるだけでなく、ビルド サーバーでも機能しません。(ちなみに、JAR への絶対パスを使用することも問題外であることを指摘したいと思います。これも、いくつかの異なるマシンでビルドされているためです。)

私が見つけたより便利な方法は、POM ファイルでローカル リポジトリを定義し、パスを指すことfile:${project.basedir}/libでした。(この記事のように) 残念ながら、JAR とリポジトリ定義をcarPOM に配置すると、JAR に依存関係を正常に追加できませんhorsecarinへの追加の参照がある場合とない場合の両方を試し、に を指すhorse2 番目のリポジトリを定義しました。この問題は、特に JAR 依存関係をラップするために 3 番目のモジュールを作成しようとした場合にも残ります。horsefile:${project.basedir}/../car/libtransport-lib

JAR ファイルを両方のモジュールに追加し、2 つの個別のモジュール ローカル リポジトリを定義する可能性が最も高いですが、2 つの (頻繁に更新される) JAR を同期させておく必要があるなどの理由で、そうしなければならない場合を除き、実際にはそうしたくありません。

したがって、私の質問は次のとおりです。言及されているパラメーターと制限を考慮して、プロジェクト内の同じ JAR ファイルに依存する 2 つのモジュールを動作させることが確認されている方法を誰か教えてもらえますか?

4

1 に答える 1

2

最善の解決策は、Archiva、Artifactory、Nexus などのリポジトリ マネージャーを使用し、そのアーティファクトをリポジトリ マネージャーにインストールすることです。その後、問題なく pom ファイルでこのアーティファクトを直接使用できます。

スコープ システムは使用しないでください。リリース後に他の問題が発生する可能性があります。

于 2013-10-21T16:52:25.493 に答える