打包环境安装
graalvm-jdk的安装
在https://github.com/graalvm/graalvm-ce-builds/releases下载graalvm-jdk, 系统环境变量JAVA_HOME,设置为graalvm-jdk
解压后路径,其他环境变量如加入到PATH,CLASS_PATH配置同普通java SDK 一样。
VsBuildTool安装
安装Microsoft Visual Studio 2022,选择“使用c++桌面开发”,安装Windows10 sdk开发包。安装成功后再次打开必须确保勾选。有时会不成功,可以单独下载
Microsoft Visual Studio 2022 Build Tools构建工具 安装,我就是这样安装成功.
- 确认vcvars64.bat文件是否存在
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat
- 确认以下环境变量目录和操作系统环境变量中是否存在,不存在按以下配置
- LIB环境变量
在环境变量中新增变量名为LIB,变量值为以下的环境变量
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\um\x64;
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\ucrt\x64;
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64;
- INCLUDE环境变量
在环境变量中新增变量名为INCLUD,变量值为以下的环境变量
C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\ucrt;
C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um;
C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared;
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\include;
java项目工程 pom.xml配置
<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>
使用native-image工具本地编译
mvn -Pnative native:compile
报错
执行过程中出现下面类似错误信息:
Execution of E:\tools\graalvm-ce-java17-22.3.1\bin\native-image.cmd @target\tmp\native-image-2154084464642699530.args returned non-zero result
在编译过程中在target/tmp下会产生相应的args文件,处理方法 ,编辑对应的args文件的把"\" 替换为"/"。单独执行以下命令(args文件名和路径按本地实际修改)
E:\tools\graalvm-ce-java17-22.3.1\bin\native-image.cmd @target\tmp\native-image-2154084464642699530.args
打包结果和运行
在在target/目录下有相应的exe文件,可以复制这个exe文件到其他路径,并复制一份yml配置文件,修改配置是否生效和正常启动。
参考文档
SpringBoot3 Graalvm Native-Image尝鲜
Spring Boot 3 新特性-java程序封装成exe