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).