次の構造のプロジェクトがあります。
+---main
| \pom.xml
+---module1
| \pom.xml
+---module2
| \pom.xml
+---module3
| \pom.xml
+---module4
| \pom.xml
+---pom.xml
モジュールはServiceLoader
メカニズムを使用してサービスを登録します。メインクラスはモジュール内にあり、メカニズムmain
を使用してクラスパスにサービスをロードする責任もあります。ServiceLoader
問題は、ユーザーが個別にインストールしたため、main
モジュールがmodule1
、module2
、module3
および を認識しないことです。module4
私がしたいのは、プログラムの起動時にこれらのモジュールのすべてのクラスをクラスパスに追加して、 ServiceLoader がこれらのモジュールのサービスを認識できるようにすることです。
現在、モジュールから実行時にこれらのモジュールをロードしmain
ていますが、IDE がこれらのモジュールを認識しておらず、これらのモジュールをランタイム。Elasticsearch や PrestoDB などのモジュラー Java プロジェクトがこの問題をどのように処理するかを見てきましたが、どちらも実行時にインストールされたモジュールをロードするようです。
モジュラー Java アプリケーションを開発するとき、この問題をどのように処理しますか? ユーザーがインストールしたモジュールのjarファイルを含むpluginsというディレクトリがあるとしましょう。mavenプラグインを使用して、そのディレクトリ内のすべてのjarを含むクラスパスでアプリケーションを起動する方法はありますか? または、実行時にこれらの jar をロードする必要がありますか?