You could use the new jpackage to create a native runtime of your application. The jpackager is now targeted for JDK 13, but can still be used to create a native Java 11 application.
You can download an EA build of JDK 13 with jpackage http://jdk.java.net/jpackage/ You would need to build on each platform, Linux, Windows, Mac. You mentioned you use Maven. When Java 9 came out I had already moved over to Gradle, so not familiar with the maven configuration. Here is a Gradle task to create a Java 11 runtime using jlink with the Java 11 jmods task createRuntime(type: Exec) { dependsOn installDist inputs.dir(installDist.outputs.files.singleFile) outputs.dir("${buildDir}/runtime") doFirst { delete "${buildDir}/runtime" } def libDir = new File(installDist.outputs.files.singleFile, "lib").path commandLine '/usr/java/jdk-11/bin/jlink', '--module-path', "/usr/java/jdk-11/jmods:${libDir}", '--add-modules', 'eu.yourmodule.application', '--output', "${buildDir}/runtime" } You then use this runtime with jpackage to create a native application image or installer. task createPackage(type: Exec) { dependsOn createRuntime commandLine '/usr/java/jdk-13/bin/jpackage', 'create-installer', '--verbose', '--force', '--name', project.name, '--app-version', project.version, '--module', "${mainClassName}", '--resource-dir', "${buildDir}/package", '--runtime-image', "${buildDir}/runtime", '--output', "${buildDir}/native" } /Sverre Den ons. 20. feb. 2019 kl. 19:57 skrev Nicolas Therrien < nicolas.therr...@motorolasolutions.com>: > Hi! > > What is the proper way to create distributable packages of a JavaFx > Application? > > I have a Java 11 application which I build as a module. The distribution > includes a "modules" folder with all dependencies in it, and a script to > launch the module. > > This assembly works if I build it on the same machine as I am going to be > running it on. However, I realized that depending on which build agent the > assembly is going to be created, the platform specific javafx dependencies > may not match the target assembly. For example, if the build agent is a > linux build agent, the windows and mac assembly contains linux javafx > runtime. > > Maven will always pull the platform-specific libraries of the system it is > running on. > > This was not a problem when JavaFx was part of the JDK since the correct > runtime libraries were installed on the system already. > > What is the correct way to create a windows or linux package in a build > platform independent way? > > I found an article which showed how to force maven to include all platforms > as dependencies, but then I have to add dependency on each transitive > library. Sounds like a lot of trouble for a simple task. > > How do you guys package your apps for various platforms? > > *Nicolas Therrien* > > Senior Software Developer > > *[image: > > https://www.motorolasolutions.com/content/dam/msi/images/logos/corporate/msiemailsignature.png]* > > *o*: +1.819.931.2053 >