JLink: экспортировать java-модули в отдельные файлы

С JLink я могу создать свое приложение с крошечной JVM. Пока сборка монолитная: все java-модули плавятся внутри одного файла (который можно распаковать с помощью jimage):

jlinkImage/
└──lib/
   └──modules

Теперь я хотел бы делать инкрементные сборки: когда я развертываю свое приложение, я хотел бы загружать только те модули, которые изменились с момента последнего выпуска.

Можно ли настроить JLink для экспорта различных модулей Java в отдельные файлы?

e.g.

jlinkImage/
└──lib/
   └── moduleA
   └── moduleB
   └── moduleC

person Ealrann    schedule 12.07.2019    source источник


Ответы (1)


После более глубокого изучения этого вопроса:

Грубый ответ: нет. Это не цель JLink, она служит только для создания жесткой JRE.

Однако JRE, созданную JLink, все же можно расширить с помощью внешних модулей. Вот простой способ разделить модули в разных файлах:

  1. Создайте минимальную JRE с jlink, например:

jlink --add-modules java.base,java.xml --output minimalJre

  1. Добавьте несколько jar-модулей внутри minimalJre:
minimalJre/
└──modules/
   └── moduleA
   └── moduleB
   └── moduleC
  1. Запустите его с помощью:

bin/java -p modules/ <other args>

person Ealrann    schedule 16.07.2019