Maven plugin for jpackage tool available in JDK-14.
This plugin expects maven-toolchains-plugin configured in the project. Toolchain "jdk" will be queried for
tool = "jpackage". If jpackage cannot be found using toolchain then plugin will try to use 'jpackage' executable
from path specified by java.home system property.
There are generic parameters as well as OS-specific parameters for OS X and Windows.
Plugin determines OS name using os.name system property in order to configure OS-specific parameters.
Generic parameters should be placed in the root plugin configuration. OS-specific parameters should be separated via executions. Id of the executions are irrelevant however using OS names improves usability.
Example:
<executions>
<execution>
<id>mac</id>
<configuration>
<icon>icons/icons.icns</icon>
</configuration>
</execution>
<execution>
<id>win</id>
<configuration>
<icon>icons/icon.ico</icon>
<winMenu>true</winMenu>
</configuration>
</execution>
</executions>With above execution configuration the following command lines can be used:
- for OS X package:
mvn jpackage:jpackage@mac - for Windows package:
mvn jpackage:jpackage@win
| Parameter | JPackage Argument |
|---|---|
| type | --type <type> |
| name | --name <name> |
| appVersion | --app-version <version> |
| destination | --dest <destination path> |
| copyright | --copyright <copyright string> |
| description | --description <description string> |
| vendor | --vendor <vendor string> |
| runtimeImage | --runtime-image <file path> |
| input | --input <input path> |
| installDir | --install-dir <file path> |
| module | --module <module name>[/<main class>] |
| modulePath | --module-path <module path>... |
| mainClass | --main-class <class name> |
| mainJar | --main-jar <main jar file> |
| icon | --icon <icon file path> |
| verbose | --verbose |
| arguments | --arguments <main class arguments> |
| Parameter | jpackage argument |
|---|---|
| winMenu | --win-menu |
| winDirChooser | --win-dir-chooser |
| winUpgradeUuid | --win-upgrade-uuid <id string> |
| winMenuGroup | --win-menu-group <menu group name> |
| winShortcut | --win-shortcut |
| winPerUserInstall | --win-per-user-install |
| Parameter | jpackage argument |
|---|---|
| macPackageIdentifier | --mac-package-identifier <ID string> |
| macPackageName | --mac-package-name <name string> |
| macPackageSigningPrefix | --mac-package-signing-prefix <prefix string> |
| macSign | --mac-sign |
| macSigningKeychain | --mac-signing-keychain <file path> |
| macSigningKeyUserName | --mac-signing-key-user-name <team name> |
| Parameter | jpackage argument |
|---|---|
| linuxPackageName | --linux-package-name <package name> |
| linuxDebMaintainer | --linux-deb-maintainer <email address> |
| linuxMenuGroup | --linux-menu-group <menu-group-name> |
| linuxRpmLicenseType | --linux-rpm-license-type <type string> |
| linuxAppRelease | --linux-app-release <release value> |
| linuxAppCategory | --linux-app-category <category value> |
| linuxShortcut | --linux-shortcut |
| Plugin Value | JPackage Type |
|---|---|
| APP_IMAGE | app-image |
| DMG | dmg |
| PKG | pkg |
| EXE | exe |
| MSI | msi |
| RPM | rpm |
| DEB | deb |
Default command line arguments are passed to the main class when the application is started without providing arguments. Each argument should be specified using <argument> configuration parameter.
Example:
<arguments>
<argument>SomeArgument</argument>
<argument>Argument with spaces</argument>
<argument>Argument with "quotes"</argument>
</arguments>
<plugin>
<groupId>org.panteleyev</groupId>
<artifactId>jpackage-maven-plugin</artifactId>
<version>0.0.1</version>
<configuration>
<name>Application Name</name>
<appVersion>${project.version}</appVersion>
<vendor>app.org</vendor>
<runtimeImage>${java.home}</runtimeImage>
<module>${appModule}/${appMainClass}</module>
<modulePath>target/mods</modulePath>
<destination>target/dist</destination>
<javaOptions>
<option>--enable-preview</option>
<option>-Dfile.encoding=UTF-8</option>
</javaOptions>
</configuration>
<executions>
<execution>
<id>mac</id>
<configuration>
<icon>icons/icons.icns</icon>
</configuration>
</execution>
<execution>
<id>win</id>
<configuration>
<icon>icons/icon.ico</icon>
<winMenu>true</winMenu>
</configuration>
</execution>
</executions>
</plugin>