У меня есть старая версия jar, теперь я хочу использовать jlink для генерации jre меньшего размера, как это сделать? - PullRequest
0 голосов
/ 17 мая 2018

У меня есть java-приложение, использующее java8 и maven, теперь я хочу использовать jdk9, чтобы сгенерировать jre меньшего размера для упаковки с моим приложением, как это сделать?Если это невозможно, не могли бы вы дать мне maven, использующий jlink для создания небольшой демонстрационной версии jre? Мой английский не очень хорошо, извините и спасибо.

1 Ответ

0 голосов
/ 17 мая 2018

Вы можете использовать JDeps для анализа ваших зависимостей от модулей :

jdeps -summary -recursive --class-path $libs $jar

Заменить $libs всеми вашими зависимостями (даже переходными; Maven может их скопировать ) и $ jar с вашим приложением JAR.Выходные данные затем содержат список зависимостей от модулей (ищите ... -> java.* и ... -> jdk.*).

Если вы работаете в Linux, вы можете использовать этот конвейер для получения отсортированного списка имен модулей:

jdeps -summary -recursive --class-path 'jars/*' jars/app.jar
    | grep '\-> java.\|\-> jdk.'
    | sed 's/^.*-> //'
    | sort -u

Если вы используете Java 10 или более позднюю версию, вы можете использовать --print-module-deps вместо -summary.

Взять этот список и передать его в jlink:

jlink
    --module-path $jdk/jmods
    --add-modules $modules
    --output minimal-jre

Если вы также хотите связать все сервисы платформы, добавьте --bind-services.

В следующей строке будут перечислены все определенные вами модули, а также их зависимости и, возможно, сервисы, которые они связывают:

minimal-jre/bin/java --list-modules
...