重要的事情说三遍: 亲测可用!亲测可用!亲测可用!
javafx-maven-plugin一键打包javafx成中文安装包
环境: idea+maven项目+jdk1.8+innosetup-5.6.1.exe
1. 安装软件innosetup-5.6.1.exe
- 选择innosetup-5.6.1.exe版本, 官网最新是6版本的,千万不能安装6版本的,6版本的现在还不兼容这个maven插件
- 下载地址: innosetup
- 安装innosetup,一直下一步就可以的
- 配置环境变量
- 环境变量配置后, 需要重启idea,否则配置的innosetup不生效,无法打包。
2. pom配置文件添加如下内容
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--虽然spring boot 官方说的是,要想排除lombok的话,可以这么写,但是,javafx-maven-plugin不兼容这种写法,要使用下面的classpathExcludes代替-->
<!--<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>-->
</plugin>
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.8.3</version>
<configuration>
<!-- 启动类 -->
<mainClass>com.ceadeal.javafxboot.Application</mainClass>
<!-- 公司名称 -->
<vendor>Ceadeal</vendor>
<!-- 应用名称 ${project.build.finalName} = ${project.artifactId}-${project.version} -->
<appName>${project.build.finalName}</appName>
<!-- 发行版本 -->
<nativeReleaseVersion>${project.version}</nativeReleaseVersion>
<!--
图标设置
> 参考:https://stackoverflow.com/questions/15880102/how-to-set-custom-icon-for-javafx-native-package-icon-on-windows
# 方式1(按deployDir、appName配置读取ico文件)
# 使用jfx:native打包时,默认会去src/main/deploy/package/windows/${appName}.ico
<deployDir>${project.basedir}/src/main/deploy</deployDir>
# 方式2(固定使用一个图标,与版本号无关)
# 优先级高于第一种方式
<bundleArguments>
<icon>${project.basedir}/src/main/resources/icon/icon.ico</icon>
</bundleArguments>
-->
<bundleArguments>
<icon>${project.basedir}/src/main/resources/icon/icon.ico</icon>
<!--下面这2个参数搭配,可实现一个特别重要的功能,就是,提示用户手动选择程序安装目录,默认目录是在:C:\Program Files (x86)\appName-->
<!--设置为true将在Program Files中安装应用程序。设置为false将应用程序安装到用户的主目录中。默认值为false。-->
<systemWide>true</systemWide>
<!-- 让用户选择安装目标文件夹 -->
<installdirChooser>true</installdirChooser>
</bundleArguments>
<!-- 桌面图标 -->
<needShortcut>true</needShortcut>
<!-- 菜单设置 -->
<needMenu>true</needMenu>
<!--添加原生的dll等,因为在打包后,会自带2个java.library.path目录,一个是app目录下,一个是exe所在的目录,只要把dll放到这2个目录的其中一个下,就可以加载dll,可以使用additionalAppResources配置dll目录-->
<!--成功实现将项目目录下的dll目录下的所有文件复制到了app目录下,app目录也是java.library.path目录,可以直接加载dll--><additionalAppResources>${project.basedir}/dll</additionalAppResources>
<!--使用这个additionalBundlerResources,不能实现添加dll到app目录-->
<!--<additionalBundlerResources>-->
<!--</additionalBundlerResources>-->
<!--排除掉不想要打包进lib依赖库的依赖-->
<classpathExcludes>
<classpathExclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</classpathExclude>
</classpathExcludes>
<!--jvmProperties可以添加额外的jvm参数-->
<!--<jvmProperties>
</jvmProperties>-->
<!--默认情况下,这将被设置为'ALL',根据你安装的操作系统,以下值对于安装者来说是可能的:-->
<!--windows.app (只创建Windows可执行文件,不生成安装向导的exe)-->
<!--exe (通过InnoIDE生成exe安装程序)-->
<!--msi (Microsoft Windows MSI Installer, via WiX)-->
<!--可以同时添加多个bundler选项,下面是同时生成exe文件夹及exe安装包的-->
<!--<bundler>windows.app</bundler>-->
<bundler>exe</bundler>
<!--如果构建过程中出现问题,可以打开这个,会显示详细的打包过程信息-->
<verbose>true</verbose>
<!--生成完后,如果打开verbose的话,最后会提示一行,配置文件已保存到....,可以复制路径,打开查看生成的xxx.iss inno 安装脚本-->
</configuration>
</plugin>
</plugins>
</build>
3. 打包成安装程序
mvn jfx:native
上面是打包命令↑↑↑↑↑↑
打包完成后, 日志上面会显示打包后的安装程序在哪个位置
4. 注意项:
- 程序中的图片资源名称不能使用中文,否则会打包失败!!!
- 程序桌面icon图标不能使用太大的(自测1368kb不行,100kb可以使用),否则会打包失败!!!