目录
- 前言
- 打包方式和过程
- 1. 基于maven插件打包
- 2. 基于IDEA打包
- 项目目录以及问题排查
前言
年前改造的一个JavaFx桌面应用程序,按照以前【可执行jar包+exe4j】的思路去打包,很不方便。后发现maven 和 Inteij IDEA对JavaFx的打包提供了非常好的支持,故记录下来。
- Inteij IDEA版本:2018.3.1
- maven版本:3.3.9
- javafx-maven-plugin版本:8.8.3
打包方式和过程
1. 基于maven插件打包
如果使用maven打包,需要添加如下配置,但是打包windows时需要很多依赖库,具体的打包方式可以参考文章:
<build>
<plugins>
<!--javafx application package-->
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.8.3</version>
<configuration>
<!--启动类-->
<mainClass>com.maxbill.MainApplication</mainClass>
<!--启动引导-->
<!--<preLoader>com.maxbill.core.desktop.AppGuide</preLoader>-->
<!--运行文件名-->
<appName>RedisPlus</appName>
<!--启用自定义打包配置-->
<verbose>true</verbose>
<!--菜单图标-->
<needMenu>true</needMenu>
<!--桌面图标-->
<needShortcut>true</needShortcut>
<!--JVM参数-->
<jvmArgs>
<jvmArg>-Xms100m</jvmArg>
<jvmArg>-Xmx200m</jvmArg>
<jvmArg>-Dfile.encoding=UTF-8</jvmArg>
<jvmArg>-XX:-UseGCOverheadLimit</jvmArg>
<jvmArg>-Dsun.jnu.encoding=UTF-8</jvmArg>
<jvmArg>-Dvisualvm.display.name=RedisPlus</jvmArg>
<argument>-Dapple.laf.useScreenMenuBar=true</argument>
</jvmArgs>
<!--JVM启动参数-->
<launcherArguments>
<launcherArgument>-Xms100m</launcherArgument>
<launcherArgument>-Xmx200m</launcherArgument>
<launcherArgument>-Dfile.encoding=UTF-8</launcherArgument>
<launcherArgument>-XX:-UseGCOverheadLimit</launcherArgument>
<launcherArgument>-Dsun.jnu.encoding=UTF-8</launcherArgument>
<launcherArgument>-Dvisualvm.display.name=RedisPlus</launcherArgument>
</launcherArguments>
<!--JAVA启动参数-->
<runJavaParameter>
-Xms100m
<!-- -Xms50m -Xmn1g -Xss228k -XX:+UseParallelGC -XX:ParallelGCThreads=20-->
</runJavaParameter>
<!--APP启动参数-->
<runAppParameter>
--spring.profiles.active=pro
</runAppParameter>
<!--安装配置项-->
<bundleArguments>
<installdirChooser>true</installdirChooser>
</bundleArguments>
<!--供应商-->
<vendor>HericJazz</vendor>
<!--允许所有权限-->
<allPermissions>true</allPermissions>
<!--版本信息-->
<nativeReleaseVersion>v3.3.0_cluster</nativeReleaseVersion>
<!--说明信息-->
<description>
RedisPlus是为Redis可视化管理开发的一款开源免费的桌面客户端软件
</description>
</configuration>
</plugin>
</plugins>
</build>
2. 基于IDEA打包
1. 构建Artifacts
Ctrl + Shift + Alt + S 或点击图标
打开项目配置页面,基于javaFx项目构建Artifacts
2. 配置Artifacts
名称和输出目录
3.将依赖加入到输出目录中
4.选择Main-Class
打包时,长宽的像素是必填的,不过如果项目中也设置了,最终的效果会以项目中设置的为准。也可以加一下应用程序的icon:
4.打包项目
项目目录以及问题排查
[Output directory]/bundles 目录下为实际打包结果:
[Output directory]/bundles目录下包含执行目录和依赖包
[Output directory]/bundles/[项目名称] 目录下可以找到 对应操作系统的可执行文件
[Output directory]/bundles/[项目名称] 目录下还有jar包的目录和javaFx环境相关目录
[Output directory]/bundles/[项目名称]/app 目录下可以找到项目的可执行jar包
直接启动exe程序可能会出现错误,但是并不好排查,可以利用可执行jar包进行排查
进入 [Output directory]/bundles/[项目名称]/app 目录下
使用命令,查看项目输入日志进错误排查
java -jar xxxx.jar