SpringBoot3 + GraalVM安装和初次打包

重点:必须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"
  1. 首先从maven官网下载新的maven安装包
    https://maven.apache.org/download.cgi

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

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

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

  4. 修改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>
  1. 验证是否配置成功mvn -v (最好重启一下电脑或者重启命令行工具,有时候会不好使)
相关推荐
_UMR_14 小时前
springboot集成Jasypt实现配置文件启动时自动解密-ENC
java·spring boot·后端
蓝色王者15 小时前
springboot 2.6.13 整合flowable6.8.1
java·spring boot·后端
hashiqimiya17 小时前
springboot事务触发滚动与不滚蛋
java·spring boot·后端
因我你好久不见17 小时前
Windows部署springboot jar支持开机自启动
windows·spring boot·jar
无关868818 小时前
SpringBootApplication注解大解密
spring boot
追梦者12320 小时前
springboot整合minio
java·spring boot·后端
帅气的你20 小时前
Spring Boot 集成 AOP 实现日志记录与接口权限校验
java·spring boot
计算机毕设VX:Fegn089521 小时前
计算机毕业设计|基于springboot + vue在线音乐播放系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
计算机毕设VX:Fegn089521 小时前
计算机毕业设计|基于springboot + vue博物馆展览与服务一体化系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计