Автоматические модули JDK9 и зависимости "Split Packages" - PullRequest
0 голосов
/ 11 ноября 2018

Я конвертирую Java-проект для использования модулей.Один из моих модулей зависит от библиотеки hamcrest, и для него нужны оба jar-файла hamcrest.core и hamcrest.library.Эти два файла jar имеют пакет org.hamcrest.Поэтому, когда мой модуль хочет обработать эти два jar-файла как автоматические, происходит сбой, поскольку два модуля в пути к модулю не могут иметь пакеты с одинаковыми именами.Я много искал и нашел кое-что похожее на stackoverflow.Кажется, у меня есть два разумных варианта, если я не хочу перестраивать эти зависимости:

  1. Слияние двух банок в одну банку, используя мой инструмент автоматизации сборки (это maven).
  2. Каким-то образом сообщите компилятору java, что эти два jar-файла следует рассматривать как один автоматический модуль.

Итак, вот мои вопросы:

  • Возможен ли какой-либо из этих двух вариантов?Если да, то как?
  • Есть ли лучший вариант?

Заранее спасибо

1 Ответ

0 голосов
/ 16 ноября 2018

Хорошо, наконец-то мне удалось решить это так:

  1. Создайте новый модуль maven с именем hamcrest-all и добавьте зависимости на hamcrest-core и hamcrest-library.
  2. добавить maven-assembly-plugin к этому модулю с appendAssemblyId, установленным в false.
  3. удаляет зависимость от hamcrest-core и hamcrest-library от других модулей maven и вместо этого добавляет зависимость к hamcrest-all.
  4. исключить hamcrest-core и hamcrest-library при включении зависимости от hamcrest-all.

На самом деле он распаковывает hamcrest-core и hamcrest-library в файл jar, созданный для hamrest-all. И поскольку JMPS обрабатывает каждый jar-файл как проблему, проблема исчезла:)

...