javafx打包成exe安装程序

Myth丶恋晨 2023-10-10 20:01 83阅读 0赞

重要的事情说三遍: 亲测可用!亲测可用!亲测可用!

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配置文件添加如下内容

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-maven-plugin</artifactId>
  6. <!--虽然spring boot 官方说的是,要想排除lombok的话,可以这么写,但是,javafx-maven-plugin不兼容这种写法,要使用下面的classpathExcludes代替-->
  7. <!--<configuration>
  8. <excludes>
  9. <exclude>
  10. <groupId>org.projectlombok</groupId>
  11. <artifactId>lombok</artifactId>
  12. </exclude>
  13. </excludes>
  14. </configuration>-->
  15. </plugin>
  16. <plugin>
  17. <groupId>com.zenjava</groupId>
  18. <artifactId>javafx-maven-plugin</artifactId>
  19. <version>8.8.3</version>
  20. <configuration>
  21. <!-- 启动类 -->
  22. <mainClass>com.ceadeal.javafxboot.Application</mainClass>
  23. <!-- 公司名称 -->
  24. <vendor>Ceadeal</vendor>
  25. <!-- 应用名称 ${project.build.finalName} = ${project.artifactId}-${project.version} -->
  26. <appName>${project.build.finalName}</appName>
  27. <!-- 发行版本 -->
  28. <nativeReleaseVersion>${project.version}</nativeReleaseVersion>
  29. <!--
  30. 图标设置
  31. > 参考:https://stackoverflow.com/questions/15880102/how-to-set-custom-icon-for-javafx-native-package-icon-on-windows
  32. # 方式1(按deployDir、appName配置读取ico文件)
  33. # 使用jfx:native打包时,默认会去src/main/deploy/package/windows/${appName}.ico
  34. <deployDir>${
  35. project.basedir}/src/main/deploy</deployDir>
  36. # 方式2(固定使用一个图标,与版本号无关)
  37. # 优先级高于第一种方式
  38. <bundleArguments>
  39. <icon>${
  40. project.basedir}/src/main/resources/icon/icon.ico</icon>
  41. </bundleArguments>
  42. -->
  43. <bundleArguments>
  44. <icon>${project.basedir}/src/main/resources/icon/icon.ico</icon>
  45. <!--下面这2个参数搭配,可实现一个特别重要的功能,就是,提示用户手动选择程序安装目录,默认目录是在:C:\Program Files (x86)\appName-->
  46. <!--设置为true将在Program Files中安装应用程序。设置为false将应用程序安装到用户的主目录中。默认值为false。-->
  47. <systemWide>true</systemWide>
  48. <!-- 让用户选择安装目标文件夹 -->
  49. <installdirChooser>true</installdirChooser>
  50. </bundleArguments>
  51. <!-- 桌面图标 -->
  52. <needShortcut>true</needShortcut>
  53. <!-- 菜单设置 -->
  54. <needMenu>true</needMenu>
  55. <!--添加原生的dll等,因为在打包后,会自带2个java.library.path目录,一个是app目录下,一个是exe所在的目录,只要把dll放到这2个目录的其中一个下,就可以加载dll,可以使用additionalAppResources配置dll目录-->
  56. <!--成功实现将项目目录下的dll目录下的所有文件复制到了app目录下,app目录也是java.library.path目录,可以直接加载dll--><additionalAppResources>${project.basedir}/dll</additionalAppResources>
  57. <!--使用这个additionalBundlerResources,不能实现添加dll到app目录-->
  58. <!--<additionalBundlerResources>-->
  59. <!--</additionalBundlerResources>-->
  60. <!--排除掉不想要打包进lib依赖库的依赖-->
  61. <classpathExcludes>
  62. <classpathExclude>
  63. <groupId>org.projectlombok</groupId>
  64. <artifactId>lombok</artifactId>
  65. </classpathExclude>
  66. </classpathExcludes>
  67. <!--jvmProperties可以添加额外的jvm参数-->
  68. <!--<jvmProperties>
  69. </jvmProperties>-->
  70. <!--默认情况下,这将被设置为'ALL',根据你安装的操作系统,以下值对于安装者来说是可能的:-->
  71. <!--windows.app (只创建Windows可执行文件,不生成安装向导的exe)-->
  72. <!--exe (通过InnoIDE生成exe安装程序)-->
  73. <!--msi (Microsoft Windows MSI Installer, via WiX)-->
  74. <!--可以同时添加多个bundler选项,下面是同时生成exe文件夹及exe安装包的-->
  75. <!--<bundler>windows.app</bundler>-->
  76. <bundler>exe</bundler>
  77. <!--如果构建过程中出现问题,可以打开这个,会显示详细的打包过程信息-->
  78. <verbose>true</verbose>
  79. <!--生成完后,如果打开verbose的话,最后会提示一行,配置文件已保存到....,可以复制路径,打开查看生成的xxx.iss inno 安装脚本-->
  80. </configuration>
  81. </plugin>
  82. </plugins>
  83. </build>

3. 打包成安装程序

  1. mvn jfx:native

上面是打包命令↑↑↑↑↑↑


打包完成后, 日志上面会显示打包后的安装程序在哪个位置

4. 注意项:

  1. 程序中的图片资源名称不能使用中文,否则会打包失败!!!
  2. 程序桌面icon图标不能使用太大的(自测1368kb不行,100kb可以使用),否则会打包失败!!!

发表评论

表情:
评论列表 (有 0 条评论,83人围观)

还没有评论,来说两句吧...

相关阅读