Skip to content

JavaFX-Starter/JavaFX-Package-Sample

 
 

Repository files navigation

JavaFX 打包示例(Windows下的演示,其他平台自行替换)

当前为Java17版本,Java15版本请转到主分支

若你实在没有办法处理非模块化的第三方依赖及分裂包相关的模块化问题,可以参考使用The Badass Runtime Plugin

插件来对非模块化项目进行构建

准备工作

  • 命令行环境:set JAVA_HOME="C:\CommandLineTools\Java\jdk-16",PowerShell中设置的临时环境变量对mvn无效,在cmd中设置的有效
  • IDEA:
    • Gradle:Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> 指定Gradle JVM为Java16
    • Edit Configurations:JVM options -> (方式二需要在此添加参数)

Gradle Task(方式一)

使用gradle自定义任务拼接命令进行打包(不要变动项目的gradle版本设置,同时请确认gradle运行在java16环境下)

  • 构建EXE镜像 -> gradlew package2Image
  • 构建MSI安装包 -> gradlew package2Installer

Badass JLink Plugin(方式二,只支持Gradle,当前插件制作出来的MSI安装包会比方式一方式三大十几兆,但是EXE镜像会小不少)

  • 构建EXE镜像 -> gradlew jpackageImage
  • 构建安装包(MSI、EXE) -> gradlew jpackage

Maven Exec(方式三,Maven不熟悉)

本方式目前的配置只够建出了镜像,如果要构建出安装包需要自行调整和补充插件org.codehaus.mojo:exec-maven-plugin的配置项,包括--icon参数在macOS平台上需要改成icns文件的路径

  • 构建jar包(本步骤会自动拷贝项目所需第三方依赖到target/alternateLocation目录下) -> mvn package
  • 构建jpackage命令执行打包 -> mvn exec:exec

手动构建(方式四,为方式一的手动版)

  • 下面的命令都是基于gradle assemble(jar)构建出的jar包路径(build目录)来执行,如果使用mvn package需要自行替换对应的jar包路径(target目录)。
  • maven版本的相关插件正常使用(mvn javafx:runmvn javafx:jlink
  • 下述命令切换到其他平台应该通用(未测试)。

执行(以下命令中-p参数的值,可以使用gradle printDependentJarsList的结果来替换)

C:\CommandLineTools\Java\jdk-16\bin\java.exe --add-exports javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix -p ".\build\libs\JavaFX-Package-Sample-1.0.0.jar;C:\CommandLineTools\Java\javafx-sdk-16\lib;C:\Users\icuxika\.m2\repository\com\jfoenix\jfoenix\9.0.10\jfoenix-9.0.10.jar" -m "sample/com.icuxika.MainApp"

构建出安装包(WIX TOOLSET)

C:\CommandLineTools\Java\jdk-16\bin\jpackage.exe -n JavaFXSample --java-options "--add-exports=javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix" -p ".\build\libs\JavaFX-Package-Sample-1.0.0.jar;C:\CommandLineTools\Java\javafx-jmods-16;C:\Users\icuxika\.m2\repository\com\jfoenix\jfoenix\9.0.10\jfoenix-9.0.10.jar" -m "sample/com.icuxika.MainApp" --icon ./src/main/resources/application.ico --app-version 1.0.0 --dest ./build/build-direct-package --temp ./build/build-direct-package/temp --win-dir-chooser --win-menu --win-menu-group JavaFXSample --win-shortcut

构建出镜像

C:\CommandLineTools\Java\jdk-16\bin\jpackage.exe --type app-image -n JavaFXSample --java-options "--add-exports=javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix" -p ".\build\libs\JavaFX-Package-Sample-1.0.0.jar;C:\CommandLineTools\Java\javafx-jmods-16;C:\Users\icuxika\.m2\repository\com\jfoenix\jfoenix\9.0.10\jfoenix-9.0.10.jar" -m "sample/com.icuxika.MainApp" --icon ./src/main/resources/application.ico --app-version 1.0.0 --dest ./build/build-direct-app-package

【补充】利用mvn javafx:jlink构建出的镜像来构建可执行程序(pom.xml插件里已经指定了--add-exports等参数,但是此命令依旧需要加,java15时却是不需要的)

生成exe

C:\CommandLineTools\Java\jdk-16\bin\jpackage.exe --type app-image -n JavaFXSample --java-options "--add-exports=javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix" -m "sample/com.icuxika.MainApp" --icon "./src/main/resources/application.ico" --runtime-image "./target/build-link/" --dest "./target/build-package"

构建出安装包

C:\CommandLineTools\Java\jdk-16\bin\jpackage.exe -n JavaFXSample --app-image ./target/build-package/JavaFXSample --app-version 1.0.0 --dest ./target/build-link-package --temp ./target/build-link-package/temp --win-dir-chooser --win-menu --win-menu-group JavaFXSample --win-shortcut

About

JavaFX17 打包示例

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages