Bootstrap

Spring Boot 3 新特性-java程序封装成exe

​ 之前java程序封装成exe 较为麻烦,对于一些需要windows部署的项目不是很友好,生产环境必须要求要安装jdk,并且通过java -jar 的方式运行jar包,windows下容易误触cmd命令窗口导致程序暂停。对于这种情况可以考虑通过下文方式将程序封装成exe来运行。

1.环境准备

本文以windows环境下载idea中运行为例

  • jdk 版本要求 17 及以上,不向下兼容,springboot 版本 要求3.0 +,idea版本要求 2022.1及以上,之前的idea版本 不支持使用jdk17

2.项目代码说明

  1. 如图可以通过 Spring Initializr 初始化一个spring项目

在这里插入图片描述

2.把下面的依赖 引入到你的基于maven管理的springboot项目中,或者对照pom文件进行修改

(这里必须要注意:jdk 版本要求 17 及以上,不向下兼容,springboot 版本 要求3.0 +

  • pom 文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--不显示的依赖lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.graalvm.buildtools</groupId>
                <artifactId>native-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

3.在配置文件中指定端口即可

# Tomcat
server:
  port: 8081

4.创建一个测试controller

@RestController
@RequestMapping("info")
public class TestController {


    @GetMapping("/test")
    public String test(){
        return "hello spring boot 3.0";
    }
}

5.启动项目,访问接口 没有问题 就可以进行项目封装exe 啦

3.封装 exe

在项目的根目录下(也就是 和pom文件同一级)执行以下命令即可将项目封装成exe。

mvn -Pnative native:compile

这里要注意的是通过 cmd 命令窗口直接执行上述命令会报错,需要开发环境下安装 graalvm 以及 Visual Studio

  • graalvm 安装

下载地址:https://github.com/graalvm/graalvm-ce-builds/releases/tag/vm-22.3.0

建议下载 对java17支持的版本

下载安装之后如图所示
在这里插入图片描述

配置环境变量

# JAVA_HOME  指定 graalvm-ce-java17-22.3.0 安装位置,
# 另外需要在 PATH 下指定 graalvm-ce-java17-22.3.0的bin目录,
# 如果存在多个jdk 建议将graalvm-ce-java17-22.3.0的bin 配置上移 如图所示

在这里插入图片描述

cmd 查看 java -version 如图所示即为安装成功

在这里插入图片描述

  • Visual Studio 安装

下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/

下载社区版即可,下载之后安装时注意选择使用 C++ 开发桌面 开发

安装好vs 以及graalvm 就可以进行 exe的封装啦!

  • 搜索vs 并打开命令窗口,通过cd命令,找到项目所在的pom.xml 所在的文件夹

在这里插入图片描述

  • 再次执行mvn -Pnative native:compile命令就可以成功啦
  • 在项目的target目录下就可以找到封装好的exe程序
;