openjdk.ruOpenJDK на русском

JEP 311: Java Packager API & CLI

API и интерфейс командной строки (CLI) для Java Packager

ОтветственныйVictor Drozdov
ТипFeature
ОбластьJDK
СтатусClosed / Withdrawn
Компонентdeploy / packager
Обсуждениеjdk dash dev at openjdk dot java dot net
ТрудоёмкостьM
ДлительностьM
Связан сJEP 343: Packaging Tool (Incubator)
РецензентыChris Bensen, Kevin Rushforth
ОдобренKevin Rushforth
Создан2017/04/11 16:07
Обновлён2018/04/05 20:22
Задача8178442

Аннотация

Создать новые API и CLI для Java Packager, рассчитанные на долгосрочное использование.

Мотивация

Java Packager API сейчас не документирован и не поддерживается. Его используют инструменты сборки, например ant-javafx.jar, а также плагины Gradle и Maven. Сейчас они используют API, который находится в пакетах:

com.oracle.tools.packager
com.sun.javafx.tools.packager
com.sun.javafx.tools.packager.bundlers
com.sun.javafx.tools.resource

API слишком широк. Он должен лучше согласовываться с платформой и больше не экспортировать пакеты com.sun.* или com.oracle.*. Все они получили статус Deprecated (устаревший) в JDK 10 и будут удалены в JDK 11. У всех имён пакетов должен быть общий префикс. Каждая опция должна быть доступна через CLI.

Текущий CLI Java Packager неинтуитивен, не согласуется с другими инструментами Java, и через него доступны не все возможности. Java Packager должен предоставить новый CLI, который открывает доступ ко всем возможностям и доступен через ToolProvider.

Описание

ant-javafx.jar получит статус Deprecated, и его заменит ant-java.jar, который использует новый API ToolProvider и меняет все области (scopes) с "fx« на »packager". Java Packager будет доступен через ToolProvider так же, как компилятор javac и инструмент jdeps. Поддержка Java Web Start (файлов JNLP) в новом CLI будет удалена.

Аргументы CLI

Для обратной совместимости существующие аргументы CLI в JDK 10 останутся без изменений и будут вынесены в метод, который можно будет позже удалить.

CLI будет переработан: он станет проще и откроет доступ ко всем возможностям Java Packager. Синтаксис аргументов станет надёжнее и будет поддерживать один из четырёх вариантов:

-name=value
-name value
--name=value
--name value

Новые аргументы CLI

ПРИМЕЧАНИЕ: это лишь предварительный список аргументов.

Это аргументы первого уровня, которые определяют, какую операцию будет выполнять Java Packager:

-create-image
-create-installer

-create-image

-verbose
-name
--module
--module-path
--add-modules
--limit-modules
-icon
-outdir <directory>
--strip-native-commands <true/false>
-title
-vendor
-description
-category
-copyright
-license
-secondaryLauncher.name
-secondaryLauncher.module
-secondaryLauncher.mainclass
-srcdir
-srcfiles
-version
-mainclass
-classpath
-mainJar/-appclass
-daemon
-preloader
-jvmargs <name,value>(:<name,value>)*
-jvmuserargs <name,value>(:<name,value>)*
-daemon/-service
-BapplicationCategory=
-BappVersion=
-Bmac.CFBundleIdentifier=
-Bmac.category=
-Bmac.CFBundleVersion=
-BsignBundle=false
-mac.file.associations <extension,"description">(:<extension,"description">)*
-default-arguments <value>(:<value>)*
-Bicon.png

-create-installer

-Bmac.dmg.simple=true
-file.associations <extension,"description">(:<extension,"description">)*
-BsignBundle=false
-Bmac.app-store-entitlements=<filename>
-installdirChooser
-Bwin.menuGroup
-Bwin.64Bit
-Bwin.64BitJreRuntime
-Bwin.registryName
-Bwin.installerName
-Blinux.bundleName
-Blinux.deb.fullPackageName
-Blinux.deb.imageDir
-Blinux.deb.imageRoot
-Blinux.deb.configDir
-Blinux.deb.maintainer
-Blinux.deb.licenseText
-Blinux.xdg-prefix

Поддержка файла конфигурации

Будет поддержка, аналогичная java.exe, для передачи всех аргументов через файл конфигурации. Это будет файл свойств (properties).