重点:必须JDK17版本以上!!! Maven版本3.6.3+
maven版本错误的可以参考下面的内容修改maven版本
创建Springboot项目时,不要选择太高的版本,对GraalVM的兼容性不太好,会导致打包报错,我这里用的3.3.5,之前用的3.5.9但是每次打包都不成功,降低了一些版本可以成功打包
官方文档有详细的说明,具体问题可以参考官方文档,我这里主要简单总结一下官网的操作流程
https://www.graalvm.org/latest/getting-started/windows/
https://www.graalvm.org/latest/reference-manual/native-image/guides/build-spring-boot-app-into-native-executable/
简单介绍一下什么是GraalVM?
GraalVM 是由 Oracle 开发的高性能多语言运行时环境,它不仅支持 Java 和 JVM 语言(如 Kotlin、Scala),还支持 JavaScript、Python、Ruby、R、C、C++ 等多种编程语言。GraalVM 的核心价值在于它打破了传统语言壁垒,提供了一种统一的运行环境,让不同语言的代码可以无缝互操作。
优点
- 显著提升性能:启动时间大幅缩短,内存占用降低
- 云原生优化:特别适合微服务、Serverless 和 Kubernetes 环境
- 简化部署:生成的原生可执行文件无需依赖 JVM
- 安全增强:减少攻击面(无 JIT 编译器、字节码解释器)
在这里就不再详细介绍了,大家感兴趣的可以自行搜索相关资料,本篇文章主要介绍如何安装以及使用它进行一次简单的打包操作
安装GraalVM
首先下载安装graalVM(安装这个以后就不需要安装jdk,这个你可以理解为是jdk的一种,但是它可以支持更多的语言,使用这个环境你可以使用java、python等同时开发项目,具体的可以去官网查看文档)
https://www.graalvm.org/downloads
选择适合你的jdk版本,最低要求JDK17,我这里直接下载JDK17的版本(需要登录账号,建议直接github下载)

地址:https://github.com/graalvm/graalvm-ce-builds/releases?page=3
我这里分享一下我的夸克网盘链接,可以直接从这里下载:https://pan.quark.cn/s/b7f806ee57f5?pwd=tmP8

下载以后将文件进行解压,得到下面的文件

配置环境变量,将graalvm安装到系统中

新建一个环境变量,选中你解压后文件jdk17目录

修改path,将你刚刚创建的JAVA17_HOME增加到path中,如果原来存在其他JDK环境,17的位置一定要在其他环境的前面,同理如果你想切换JDK环境只需要切换先后顺序即可

在命令行中测试当前的jdk版本 java -version
-- 如果你的系统中已经安装jdk版本,只需要path中切换先后顺序,将安装了GraalVM的放到最前面

安装本地编译插件GraalVM Native Image
bash
## 安装
gu install native-image
## 验证
gu list


安装Visual Studio
下载VisualStudio,下载社区版就可以,社区版是免费的,网上的很多教程都说需要安装2022版,我这里试了试都可以,只要别低于2022版就可以
https://visualstudio.microsoft.com/zh-hans/vs/
选择C++桌面开发,(主要是要用他的一个工具x64 Native Tools Command Prompt for VS)

注意语言包一定要选择英文


安装成功以后进行验证本地程序搜索x64 Native Tools Command Prompt for VS

打包(jar包)
切换到你项目的根目录,然后执行命令mvn package 这是将服务打成jar包

出现下面的内容表示打包成功,打包后的文件在target目录下

打包为exe可执行程序
项目中一定要引入graalvm打包的插件,否则会报错
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>
使用x86_x64 Cross Tools Command Prompt for VS将jar转化为exe可执行文件

输入以下命令
bash
## 根目录运行命令打包成exe,成功后在target目录出现对应exe文件
mvn -Pnative native:compile

注意一定要使用上门安装的x86_x64 Cross Tools Command Prompt for VS运行命令否则会运行失败,这个打包时间会很漫长,大概需要三四分钟,我这还只是打包一个demo案例


双击即可运行程序,到这里今天的简单介绍就结束了
修改MAVEN版本
现在我电脑已经安装了一个3.6.2版本的maven
bash
C:\Users\lc>mvn -version
Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-27T23:06:16+08:00)
Maven home: D:\env\maven\apache-maven-3.6.2\bin\..
Java version: 17.0.6, vendor: GraalVM Community, runtime: D:\env\graalvm-ce-java17-22.3.1
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 11", version: "10.0", arch: "amd64", family: "windows"
-
首先从maven官网下载新的maven安装包
https://maven.apache.org/download.cgi

-
将压缩文件解压到自定义目录,解压以后是一个xxx-bin文件夹,进去这个文件夹就是对应的3.9.12文件夹,我这里将其移到了外层

-
修改环境变量,将MAVEN的配置改到新的路径,我这边将3.6.2改为3.9.12

判断path的配置,如果path配置的MAVEN_HOME则不需要修改,例如下图则无需修改

-
修改MAVEN的配置文件,配置仓库地址和镜像仓库
xml
<localRepository>D:\env\maven\repository</localRepository>
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
<mirror>
<id>repo1</id>
<mirrorOf>central</mirrorOf>
<name>central repo</name>
<url>http://repo1.maven.org/maven2/</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>apache snapshots</mirrorOf>
<name>阿里云阿帕奇仓库</name>
<url>https://maven.aliyun.com/repository/apache-snapshots</url>
</mirror>
</mirrors>
- 验证是否配置成功mvn -v (最好重启一下电脑或者重启命令行工具,有时候会不好使)
