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 (最好重启一下电脑或者重启命令行工具,有时候会不好使)
相关推荐
一点程序9 小时前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
奋进的芋圆11 小时前
Spring Boot 实现三模安全登录:微信扫码 + 手机号验证码 + 邮箱验证码
spring boot·redis·微信
怪兽源码11 小时前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
m0_7400437314 小时前
【无标题】
java·spring boot·spring·spring cloud·微服务
重整旗鼓~14 小时前
1.外卖项目介绍
spring boot
一点技术15 小时前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
shuair15 小时前
redis实现布隆过滤器
spring boot·redis·bootstrap
RANCE_atttackkk16 小时前
Springboot+langchain4j的RAG检索增强生成
java·开发语言·spring boot·后端·spring·ai·ai编程
好好研究18 小时前
Spring Boot - Thymeleaf模板引擎
java·spring boot·后端·thymeleaf
她说..18 小时前
策略模式+工厂模式实现单接口适配多审核节点
java·spring boot·后端·spring·简单工厂模式·策略模式