关于springboot:SpringBoot打包成exe别再用exe4j了使用JDK自带工具

32次阅读

共计 1584 个字符,预计需要花费 4 分钟才能阅读完成。

SpringBoot 打包成 exe(别再用 exe4j 了,应用 JDK 自带工具)

  • 搜到大部分打包 exe 的文章都是应用 exe4j 打包

    • 步骤贼多,装置麻烦,打包麻烦
    • 免费软件,公司应用会吃律师函
  • JDK14 以上能够应用 JDK 自带的 jpackage 打包

    • JDK 自带,一行命令搞定
    • 生成的程序包含 java 环境,用户不须要装置 java

实测环境

  • JDK:17.0.6

步骤

  • 创立一个 Springboot 我的项目,开发代码
  • 应用 ”mvn package” 打包成 jar

    • 在我的项目下生产 target 目录,且蕴含打包成的 jar(例如:spring-1.0.jar)
    • 要确认这个 jar 能应用 ”java -jar *.jar” 运行
  • 关上命令行 (CMD/Powershell) 进入我的项目根目录成 exe
  • 应用 jpackage 打包,如下
jpackage --type app-image --name spring --input target --main-jar spring-1.0.jar --win-console --dest dist
参数 作用 示例 阐明
–type 打包类型 app-image 可选:”app-image”, “exe”, “msi”,这里应用 app-image,抉择另外两个选项须要装置 WiX
–name 利用名称 spring 打包后的名称,如 ”sping.exe”
–input 输出目录 target 该目录所有文件打包到利用目录中
–main-jar 利用主 jar spring-1.0.jar –input 目录里的 jar 程序
–win-console 运行时启动控制台 –win-console 关上应用程序时,关上控制台。如果不启用在后盾运行,敞开只能从工作管理器中结束任务
–dest 输入目录 dist 输入到该目录,不要和 –input 同个目录,否则会有限循环复制目录
  • 更多其余参数查看 JPackage 指令将可执行 Jar 包打包成 EXE 运行程序和 MSI 安装程序

输入目录

  • dist

    • spring

      • app // 我的项目代码,和 target 目录基本一致

        • … 文件略
      • runtime // 运行环境,用户能够不装置 java

        • … 文件略
      • spring.exe // 点击该 exe 即可运行
      • spring.ico
  • target

    • … 目录略
    • spring-1.0.jar
    • spring-1.0.jar.original

阐明

  • 能够将 spring 目录压缩成 zip 发给用户应用

    • 目录里蕴含了 runtime,用户电脑不须要装置 java
    • 打包前:153MB
    • 打包后(zip):71.8MB

总结

  • 在不得不开发客户端时,很多人抉择 JavaFX 开发,但大家大部分应用 spring 全家桶开发
  • 用这种形式,能够持续应用 spring 开发

    • 持续前后端拆散开发
    • 前端代码框架(如:Ant D)打包后是动态文件,可间接放入 resources 目录
  • 应用 jpackage 打包成 exe
  • 发送给用户间接关上应用

    • 用户在浏览器就能够拜访
    • 能够优化成启动程序时主动关上 url
@Slf4j
@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);
        // 应用默认浏览器关上
        try {Runtime.getRuntime().exec(String.format("cmd /c start %s", "http://localhost:8080/index.html"));
        } catch (Exception e) {log.warn("关上客户端主页失败", e);
        }
    }
}

参考资料

  • JPackage 指令将可执行 Jar 包打包成 EXE 运行程序和 MSI 安装程序

    • 该文章说必须装置 WiX 和.NetFramework。但我实测时 app-image 类型不须要(有可能是因为 JDK 版本)

正文完
 0