相比《SpringNative GraalVM 打包 SpringBoot 为 Windows 的 exe 应用程序》,在 Linux 上打包为本地单文件二进制程序就比较简单了。

主要步骤

1、graalvm 和 maven 的环境配置
2、native-image 安装
3、mvn 编译打包

环境配置

1、下载 maven(略)
2、下载 GraalVM (本文社区版 graalvm-ce-java17-22.1.0)

graalvm-jdk 官方下载地址:https://github.com/graalvm/graalvm-ce-builds/releases/tag/vm-22.1.0

native-iamge 官方下载地址:https://github.com/graalvm/graalvm-ce-builds/releases/tag/vm-22.1.0

注意:不同的版本,graalvm-jdk 和 native-image 可能在一个地址中,也可能在两个不同的地址中,下载时要注意版本保持号对应一致。

下载如下图两个文件,第一个相当于 java 的 jdk,我们配置到 JAVA_HOME 和 PATH 环境变量中。第二个是 native-image,我们使用 gu 命令安装。

在这里插入图片描述

在这里插入图片描述

3、配置环境变量如下示例

export JAVA_HOME=/opt/graalvm-test/graalvm-ce-java17-22.1.0
export PATH=$PATH:$JAVA_HOME/bin

export MAVEN_HOME=/opt/soft/jenkins/maven_home
export PATH=$PATH:$MAVEN_HOME/bin

使用命令 source /etc/profile 使环境变量生效后,执行 java -version 确认是否生效。

4、安装 native-image

命令 gu -L install [下载的 native-image 文件路径]

[root@test graalvm-test]# gu -L install native-image-installable-svm-java17-linux-amd64-22.1.0.jar 
Processing Component archive: native-image-installable-svm-java17-linux-amd64-22.1.0.jar
Installing new component: Native Image (org.graalvm.native-image, version 22.1.0)
[root@test graalvm-test]# gu list
ComponentId              Version             Component name                Stability                     Origin 
---------------------------------------------------------------------------------------------------------------------------------
graalvm                  22.1.0              GraalVM Core                  Supported                     
js                       22.1.0              Graal.js                      Supported                     
native-image             22.1.0              Native Image                  Early adopter                 

编译项目

Demo 项目代码地址:https://github.com/xzxiaoshan/spring-native-demo

执行命令 mvn clean package -DskipTests -Pnative 构建,构建速度较慢(取决于你服务器的性能),等构建完成后,在项目的 target 目录中就可以看到生成的单二进制文件了。

在这里插入图片描述

执行 ./spring-native-demo 启动服务,访问 http://IP:8080/test/show 即可看到我们写的输出 OK 的接口结果。


(END)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐