javafx打包成exe安装程序

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

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. 注意项:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微微一笑满城空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值