JAVA自学尝鲜graalvm21打包springboot3.2.4为exe
- 最近发现了graalvm这个新的虚拟机,反正看介绍就觉得非常牛逼,虽然有限制,但是未来可期
- 这里必须得知道graalvm性能并没有强过传统的jvm,graalvm的优势在于启动速度极快以及内存占用极低,对于现在都是容器k8s部署来说启动速度快意义重大,占用内存低可以把多的内存分出来给其他应用,毕竟申请服务器内存,可太难了。
- 这次就自己研究graalvm21打包springboot3.2.4
安装windows支持的插
Windows 上本机映像的先决条件
安 装 Visual Studio 构建工具和 Windows SDK
-
从Visualstudio.microsoft.com
下载 Visual Studio 构建工具(C 开发环境)。 -
单击
.exe文件启动 Visual Studio 构建工具安装,然后按“继续”:
-
在主窗口中
选中“使用 C++ 进行桌面开发”框。另外,在右侧的“安装详细信息”下,选择“Windows SDK”,然后单击“安装”按钮。
-
安装完成后,重新启动系统。
-
接下来确保 Windows SDK 确实可用。打开 Visual Studio 安装程序:
-
在“已安装”选项卡下,单击“修改”并选择“单个组件”:
-
然后滚动到底部并检查是否安装了 Windows SDK 并确认构建工具已选中:
- 安装的时候语言那边选择英语,不然会有问题
使用idea安装
- 选择下载好的graalvm21,然后从idea部署启动springboot3.2.4
<?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.2.4</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</description>
<properties>
<java.version>21</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>
</dependencies>
<pluginRepositories>
<pluginRepository>
<id>aliyun</id>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</pluginRepository>
</pluginRepositories>
<profiles>
<profile>
<id>native</id>
<build>
<plugins>
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
<version>0.9.28</version>
<extensions>true</extensions>
<executions>
<execution>
<id>build-native</id>
<goals>
<goal>build</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
<configuration>
<fallback>false</fallback>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
先进行clean,然后compile
先执行spring-boot:process-aot,然后去native执行compile
-
执行完会报错,按报错修改文件,将\全改为/,然后用工具执行
-
就按照报错来执行即可,需要关闭防火墙
F:\environment2\graalvm-jdk-21.0.2+13.1\bin\native-image.cmd @target\tmp\native-image-14443236941321458483.args -H:-CheckToolchain
打包成功会生成exe