Управление модулями Java9 с помощью сторонних библиотек - PullRequest
4 голосов
/ 20 февраля 2020

Моя команда недавно начала использовать модули Jigsaw (экспериментально), которые были представлены с Java 9. Сейчас мы находимся на Java 11. С самого начала мы сталкиваемся с проблемой за проблемой. По нашему опыту модули Springboot 2 и Jigsaw не очень хорошо работают вместе.

На самом деле, мы столкнулись с множеством различных типов проблем, которые в основном связаны с одной и той же причиной root: сторонние библиотеки не определяют свои собственные module-info.java. Эти библиотеки затем становятся неназванными модулями, которые могут привести к конфликту. Типичный пример:

java.lang.module.ResolutionException: Modules A and B export package X.Y.Z to module C

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

Мои конкретные вопросы будут такими: Есть ли что-то проще? способы решить выше ResolutionException помимо исправления модулей? Существуют ли инструкции по работе со сторонними библиотеками? Тот факт, что большинство популярных фреймворков не заботятся о реализации module-info.java, создает впечатление, что никто не использует модули, поэтому нет необходимости его поддерживать.

...