SpringNative GraalVM 打包 SpringBoot 为 Linux 的 单文件应用程序

Posted catoop

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringNative GraalVM 打包 SpringBoot 为 Linux 的 单文件应用程序相关的知识,希望对你有一定的参考价值。

相比《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 官方下载地址:https://github.com/graalvm/graalvm-ce-builds/releases

下载如下图两个文件,第一个相当于 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)

以上是关于SpringNative GraalVM 打包 SpringBoot 为 Linux 的 单文件应用程序的主要内容,如果未能解决你的问题,请参考以下文章

SpringNative GraalVM 打包 SpringBoot 为本地应用 exe 程序

SpringNative GraalVM 打包 SpringBoot 为 Windows 的 exe 应用程序

SpringNative GraalVM 打包 SpringBoot 为 Windows 的 exe 应用程序

Spring 官宣,干掉原生 JVM!

Spring 官宣,干掉原生 JVM!

Spring Native