Существуют ли на практике java-модули по-разному ограничения компиляции и времени выполнения? - PullRequest
0 голосов
/ 08 января 2019

Когда мы распространяем наши приложения, это очень часто выглядит как «толстая фляга или война». Ни одна из этих технологий не поддерживает запуск с использованием module-path

Некоторые люди даже говорят, что Java-модули

на самом деле не предназначен для замены файлов WAR (или любого другого «исполняемого» стиля jar

но каждая библиотека в конечном итоге окажется в каком-то приложении.

Итак: модули могут использоваться для внедрения инкапсуляции / модульности во время разработки и тестирования, но время выполнения будет другим?

1 Ответ

0 голосов
/ 01 февраля 2019

Это зависит от того, как вы создаете и запускаете свое приложение.

Если вы создадите свое приложение в виде толстой банки с пружинной загрузкой (например, с помощью spring-boot-maven-plugin), у вас не будет «настоящих» модулей в качестве среды выполнения. Ваши модули станут частью неназванного модуля, который «требует» всех других модулей и «экспортирует» все его пакеты.

Вы можете собирать и запускать свое приложение модульно, но не создавая толстый jar-файл с помощью spring-boot-maven-plugin. Один из способов сделать это - поместить все зависимости в один каталог, включая модуль с вашим основным классом, и запустить ваше приложение следующим образом:

java --module-path={MODULE-DIR-PATH} --module example.module/com.example.MainClass

Я создал пример приложения, объединяющего JPMS и Spring-Boot. Вы можете проверить это здесь: https://github.com/qutax/jpms-spring-example

...