GraalVM 构建 Spring Boot 原生可执行文件

第一步,配置GraalVM SDK

1. 下载SDK环境包:https://github.com/graalvm/graalvm-ce-builds/releases

在这里插入图片描述

2. 将下载下来的文件解压到本地电脑,记住这个路径。如:

D:\Program Files\graalvm-ce-java17-22.3.1

3.配置GraalVM环境变量

1.新建环境变量

变量名:GRAALVM_HOME
变量值:D:\Program Files\graalvm-ce-java17-22.3.1

2.将环境添加到path路径中

%GRAALVM_HOME%\bin

3.在CMD命令使用命令查询,如果能查询到版本,代表配置成功
gu --version
4.下载native-image,使用下面的命令下载native-image,装完以后重启电脑
gu install native-image

4.配置系统环境

1.安装VS生成工具

在这里插入图片描述

2.配置生成工具环境
		找到自己VC的安装位置,将cl的位置添加到path中。默认路径为:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.35.32215\bin\Hostx64\x64

5.项目设置环境

	如果使用idea创建项目,在创建的时候直接勾选“GraalVM Native Support”即可,不需要进行其他设置
  • Gradle:id("org.graalvm.buildtools.native") version "0.9.20"
  • Maven:
    <plugins> <plugin> <groupId>org.graalvm.buildtools</groupId> <artifactId>native-maven-plugin</artifactId> </plugin> </plugins>

6.生成exe

1.开始菜单启动x64 Native Tools Command…

在这里插入图片描述

2.定位到项目的目录下。运行生成命令
  • Gradle:gradlew nativeCompile
  • Maven:mvn -Pnative native:compile

maven项目生成的exe执行文件在target目录下,gradle生成的可执行文件在“build\native\nativeCompile”

### 使用 GraalVMSpring Boot 应用程序打包本地可执行文件 #### 安装和配置 GraalVM 为了使用 GraalVM 打包 Spring Boot 应用程序,首先需要安装并配置 GraalVM 环境。进入官方下载页面获取适用于 Windows 11 的版本,并按照说明完解压缩操作[^1]。 接着设置环境变量以便命令行工具能够识别到 GraalVM: - `GRAALVM_HOME` 设置为 GraalVM 解压后的根目录路径。 - 更新系统的 PATH 变量,加入 `%GRAALVM_HOME%\bin`。 验证安装功与否可以通过运行如下命令来确认: ```bash gu --version ``` 这一步骤确保了后续构建过程中所需的 Native Image 工具链可用。 #### 准备 Spring Boot 项目 创建一个新的或打开现有的基于 Spring Boot 3.x 版本的应用程序。考虑到 AOT (Ahead-of-Time Compilation) 支持可以显著提升性能表现,建议利用这一特性优化应用结构。 在项目的 pom.xml 文件中添加必要的依赖项以支持本地镜像编译功能以及任何其他所需插件: ```xml <dependency> <groupId>org.springframework.experimental</groupId> <artifactId>spring-aot-maven-plugin</artifactId> <version>${aot.version}</version> </dependency> <!-- 添加 native-image 插件 --> <build> ... <plugins> <plugin> <groupId>org.graalvm.buildtools</groupId> <artifactId>native-maven-plugin</artifactId> <!-- 配置参数省略 --> </plugin> </plugins> </build> ``` 上述 XML 片段展示了如何引入 Maven 插件用于处理提前编译逻辑和服务于生原生映像的任务。 #### 编写应用程序代码 编写业务逻辑部分时需要注意某些反射调用可能不被完全兼容;因此尽可能采用静态方法或者通过代理模式间接访问动态组件。对于那些不可避免的情况,则需显式声明保留这些类及其员免受修剪机制的影响。 例如,在 application.properties 中指定要保持的类列表: ```properties graalvm.native.reflection-config=classpath:/META-INF/native-image/**/reflect.json ``` 同时提供相应的 JSON 文件定义具体规则。 #### 构建本地可执行文件 一切准备就绪之后,就可以着手进行最终步骤——实际构建过程。此阶段涉及两个主要环节:一是常规的 Java 字节码编译,二是转换为目标平台上的机器指令集表示形式。 执行以下 Maven 命令触发整个流程: ```bash mvn clean package -Pnative ``` 该选项会自动激活之前提到过的 native-profile 并启动完整的构建管线直至产出目标产物为止。 一旦顺利完以上所有工作,将会得到一个独立的 .exe 文件作为输出果物,可以直接分发给终端用户而无需额外携带 JVM 或者解释器环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值