Вы можете использовать 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