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




Вы можете используйте 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
Спасибо, добавил что.
Думаю, лучше использовать
--print-module-depsвместо-summary