文章插图
GraalVM 版本:graalvm-ce-JAVA17-22.3.0SpringBoot3.0 中最重要的特性就是对 GraalVM 的支持,从而达到更快的启动速度,有两种使用方式 。
利用 GraalVM 构建可执行文件
因为需要利用 GraalVM 来打包可执行文件,所以需要你的机器上安装了 GraalVM 。新建一个 SpringBoot 3.0 的 Maven 工程,引入 parent、starter 依赖、以及两个重要的插件:
【体验一下正式发布的SpringBoot3.0】
<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>复制代码
然后执行:mvn -Pnative clean native:compile复制代码
需要花费一些时间...执行完能看到 BUILD SUCCESS:
文章插图
然后进入 target,就能看到一个 exe 文件:
文章插图
我们可以直接运行该 exe 来启动我们的 SpringBoot 应用:
文章插图
这样,我们就可以把这个可执行文件发送给另外的 windows 机器了,并且对方机器都不需要安装 JDK 就能运行我们的 SpringBoot 程序(亲自测过,确实能直接运行) 。
不过大家应该发现了问题,在 windows 上编译出来的是 exe 文件,它是不能在 linux 上运行的,那么怎么办呢?
利用 Buildpacks 构建可执行文件 Docker 镜像我们可以直接把 SpringBoot 应用对应的本地可执行文件构建为一个 Docker 镜像,这样就能跨操作系统运行了 。
Buildpacks,类似 Dockerfile 的镜像构建技术
注意要安装 docker,并启动 docker
注意这种方式并不要求你机器上安装了 GraalVM,会由 SpringBoot 插件利用Docker 镜像名字中不能有大写字母,我们可以配置镜像的名字:
/paketo-buildpacks/native-image 来生成本地可执行文件,然后打入到容器中
<properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring-boot.build-image.imageName>springboot3demo</spring-boot.build-image.imageName></properties>复制代码
然后执行:mvn -Pnative spring-boot:build-image复制代码
来生成 Docker 镜像 。执行完之后,就能看到 docker 镜像了:
文章插图
然后就可以运行容器了:
docker run --rm -p 8080:8080 springboot3demo
参考https://docs.spring.io/spring-boot/docs/current/reference/html/native-image.html#native-image.developing-your-first-Application.native-build-tools
https://www.graalvm.org/22.2/reference-manual/native-image/guides/build-spring-boot-app-into-native-executable/
推荐阅读
- 大学生|中石化公开招聘正式工,六险二金且待遇丰厚,关键专科学历也能报
- 竹间防疫机器人和华为手机语音助手小艺,正式投入战“疫”
- 张若昀|庆帝角色换人,让我们浅浅期待一下
- 王力宏|王力宏正式官宣复出,为什么是拉斯维加斯?
- 闪电侠|CW宣布《闪电侠》第九季播出日期以及剧情,该剧将于明年正式完结
- 参考一下白莲花的心机秘籍,可以变得更阳光,跟上潮人脚步
- 46个好听的“猫咪名”,可爱小巧,叫一下心都化了
- 汪小菲|张颖颖疑正式向张兰宣战?聊天记录大骂恶心,随后辟谣汪小菲力挺
- 是“真像”还是“真香”?iOS 14快速上手体验
- 记者vlog|在欧洲上网课是种什么体验?