2016-12-29 6 views
4

現在、既存のアプリケーションをジグソーモジュールに移行するためのテストを行っています。私のモジュールの1つでは、ElasticSearchとGroovy Pluginを使用しています。自動モジュールで分割パッケージを処理するにはどうすればよいですか?

  • org.elasticsearch:、残念ながら、彼らは分割パッケージを共有するのlang-グルーヴィー

のでmvn installが私を与える:

  • org.elasticsearch.moduleをelasticsearch

    X読み込みますlang.groovyとelasticsearchのorg.elasticsearch.script.groovyパッケージ

    は、ディスクリプタの各必須モジュールごとに1回です。ここで、xは各モジュールの名前です。

    もっと新しいelasticsearchバージョンでは、Java 9が最終段階になるまでに分割されたパッケージが削除されると仮定しますが、通常、レガシーの依存関係で分割パッケージを処理する方法はありますか?

    私は、モジュールパスの代わりにクラスパス上にそれらを持たせることを望んでいましたが、this conversation on the mailing listを読んだ後、Mavenコンパイラにそうするように指示する方法はないようです。 のmaven-コンパイラプラグイン3.6.0 - - jdk9-EA + 149 - Mavenの3.3.9


    いくつかのより多くのテストの後 elasticsearch 2.3.3

  • 答えて

    1

    は、私はいくつかのオプションがあると思いますそれは多くの(ただし必ずしもすべてではない)第三者の分割パッケージの状況に取り組むべきである。

    1. クリーンアップの依存関係 - 多分依存関係が実際に必要されていないか、または2つのモジュールに新しい(またはそれ以上の別個の)JAR
    2. 再構築独自のモジュールに置き換えることができ、その両方のいずれかからパッケージを読み込み、各
    3. サードパーティ製モジュール(またはその両方)を単純なモジュールにラップします。モジュールで実際に必要なパッケージのみを明示的にエクスポートします。

    状況によっては、これらのオプションの1つが分割パッケージの問題を解決するのに適している場合があります。しかし、それらのどれも、一貫したコードが実際に分割されたパッケージの両方の部分からクラスにアクセスする必要がある状況に対処できません。