如何在不使用Oracle GraalVM及Oracle许可的情况下构建Spring Boot 3.x原生镜像
Spring Boot 3 原生可执行文件的免费许可替代方案
1. 切换到GraalVM Community Edition (CE)
Spring Boot完全支持使用GraalVM Community Edition构建原生镜像,这是Oracle维护的开源免费版本,无商业许可限制。配置方式有两种:
- 本地环境安装GraalVM CE后,直接执行
spring-boot:build-image(Maven)或bootBuildImage(Gradle)任务,插件会自动检测并使用本地的GraalVM CE环境,无需依赖默认的Oracle GraalVM buildpack。 - 若在CI/CD环境中使用,可自定义buildpack,替换为基于GraalVM CE的镜像。比如使用Paketo的社区版buildpack,在构建配置中指定:
<!-- Maven配置示例 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <image> <builder>paketobuildpacks/builder-jammy-base:latest</builder> <buildpacks> <buildpack>paketobuildpacks/java-native-image</buildpack> </buildpacks> </image> </configuration> </plugin>
2. 基于OpenJDK的替代工具
除了GraalVM CE,还有这些免费开源的工具可选:
- Mandrel:作为GraalVM CE的下游发行版,虽由Quarkus团队维护,但完全兼容Spring Boot。你可以本地安装Mandrel后,配置Spring Boot插件指向该环境,或在buildpack中使用Mandrel的镜像。
- Azul Zulu GraalVM:Azul提供的免费GraalVM发行版,基于OpenJDK构建,无商业许可约束,Spring Boot插件可直接识别并使用它构建原生镜像。
3. Spring Boot官方的支持说明
Spring Boot团队始终支持开源免费的JDK和GraalVM版本,默认buildpack使用Oracle GraalVM只是可选配置之一,并非强制要求。官方文档中虽未单独针对许可问题做专项说明,但在原生镜像的构建配置章节中,明确支持自定义GraalVM环境和buildpack,这些配置即可用来规避Oracle许可限制。
内容的提问来源于stack exchange,提问作者Ludovic Bertin
相关产品推荐
相关产品推荐

