マルチモジュールの Maven プロジェクトで、2 つのモジュールcar
とhorse
. どちらも JAR ファイルに依存していtransport.jar
ます。このファイルは、オンラインの Maven リポジトリでは利用できません。そのため、これらのモジュールをプロジェクト フォルダー構造のどこかにあるファイルに依存させる方法を見つける必要があります。
私の理解では、デフォルトの Maven ソリューションは、ローカル リポジトリに JAR ファイルを手動で登録することです。これは開発マシンでは機能しますが、ビルド サーバーでは機能しなくなり、各ビルドの前にローカル リポジトリがクリアされます。
私はオンラインでこれをオン/オフする方法をしばらく検索しており、いくつかの役立つものを見つけましたが、完全に機能するものはありません.
たとえば、一般的な答えは、 を使用してファイルに依存関係を追加することです<scope>system</scope>
。ただし、そうするのは非常に悪い習慣だと主張する人がいるだけでなく、ビルド サーバーでも機能しません。(ちなみに、JAR への絶対パスを使用することも問題外であることを指摘したいと思います。これも、いくつかの異なるマシンでビルドされているためです。)
私が見つけたより便利な方法は、POM ファイルでローカル リポジトリを定義し、パスを指すことfile:${project.basedir}/lib
でした。(この記事のように) 残念ながら、JAR とリポジトリ定義をcar
POM に配置すると、JAR に依存関係を正常に追加できませんhorse
。car
inへの追加の参照がある場合とない場合の両方を試し、に を指すhorse
2 番目のリポジトリを定義しました。この問題は、特に JAR 依存関係をラップするために 3 番目のモジュールを作成しようとした場合にも残ります。horse
file:${project.basedir}/../car/lib
transport-lib
JAR ファイルを両方のモジュールに追加し、2 つの個別のモジュール ローカル リポジトリを定義する可能性が最も高いですが、2 つの (頻繁に更新される) JAR を同期させておく必要があるなどの理由で、そうしなければならない場合を除き、実際にはそうしたくありません。
したがって、私の質問は次のとおりです。言及されているパラメーターと制限を考慮して、プロジェクト内の同じ JAR ファイルに依存する 2 つのモジュールを動作させることが確認されている方法を誰か教えてもらえますか?