Как я могу обрабатывать разделенные пакеты в автоматических модулях?

В настоящее время я тестирую перенос существующего приложения на модули Jigsaw. Один из моих модулей использует ElasticSearch вместе с подключаемым модулем Groovy.

  • org.elasticsearch:эластичный поиск
  • org.elasticsearch.module:lang-groovy

К сожалению, у них раздельный пакет, поэтому mvn install дает мне:

x читает пакет org.elasticsearch.script.groovy как из lang.groovy, так и из elasticsearch

один раз для каждого требуемого модуля в дескрипторе, где x — имя каждого модуля.

Я предполагаю, что более новая версия elasticsearch устранит разделенный пакет к тому времени, когда Java 9 станет окончательной, но есть ли вообще способ обрабатывать разделенные пакеты в устаревших зависимостях?

Я надеялся иметь их в пути к классам вместо пути к модулю, но после прочтения эта беседа в списке рассылки кажется, что нет способа заставить компилятор Maven сделать это.


maven 3.3.9 - плагин компилятора maven 3.6.0 - jdk9-ea+149 - elasticsearch 2.3.3


person peterp    schedule 29.12.2016    source источник


Ответы (1)


После еще нескольких тестов я думаю, что есть несколько вариантов, которые должны решить многие (но определенно не все) ситуации с разделенными пакетами сторонних производителей.

  1. Очистите зависимости - возможно, зависимость на самом деле не нужна или может быть заменена более новым (или более отличным) JAR
  2. Реструктурируйте свой собственный модуль на два модуля, каждый из которых читает пакет из одного из обоих сторонних модулей (если возможно/разумно).
  3. оберните один из сторонних модулей (или оба) в простой модуль, который ничего не делает, кроме явного экспорта только тех пакетов, которые действительно необходимы вашему модулю.

В зависимости от ситуации один из этих вариантов может подойти для решения проблемы разделения пакета. Но ни один из них не может справиться с ситуациями, в которых согласованный фрагмент кода действительно должен обращаться к классам из обеих частей разделенного пакета.

person peterp    schedule 30.12.2016