You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI中用Jib+GraalVM构建Spring Boot原生镜像报错

问题分析与解决方案

错误原因

  1. 缺少原生镜像生成步骤:Jib原生镜像扩展依赖已生成的GraalVM原生可执行文件,你当前的构建命令未执行native:compile目标,导致扩展找不到目标文件。
  2. 扩展版本兼容性问题:你使用的jib-native-image-extension-maven版本为0.1.0,该版本过于陈旧,与Spring Boot 3.1.0的Maven属性解析逻辑不兼容,导致${start-class}变量未被正确替换为实际启动类文件名。

具体修复步骤

1. 升级Jib原生镜像扩展版本

修改pom.xml中Jib插件的扩展依赖,升级到兼容Spring Boot 3.x的版本:

<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>3.3.1</version>
    <dependencies>
        <dependency>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>jib-native-image-extension-maven</artifactId>
            <version>0.10.0</version> <!-- 升级至兼容版本 -->
        </dependency>
    </dependencies>
    <!-- 其他配置保留 -->
</plugin>

2. 修改GitLab CI构建命令

必须先执行native:compile生成原生可执行文件,再执行jib:build。更新GitLab CI的build job脚本:

./mvnw clean -Pnative native:compile jib:build -Dimage=$REPO:$TAG -Djib.container.environment=SPRING_PROFILES_ACTIVE=prod

注意保留-Pnative参数,确保激活原生构建Profile。

3. 可选:明确指定原生镜像路径(解决变量解析问题)

如果升级版本后仍存在路径解析问题,可在Jib扩展配置中直接指定原生可执行文件路径:

<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>3.3.1</version>
    <dependencies>
        <dependency>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>jib-native-image-extension-maven</artifactId>
            <version>0.10.0</version>
        </dependency>
    </dependencies>
    <configuration>
        <pluginExtensions>
            <pluginExtension>
                <implementation>com.google.cloud.tools.jib.maven.extension.nativeimage.JibNativeImageExtension</implementation>
                <configuration>
                    <!-- Spring Boot原生构建默认输出路径:target/项目artifactId -->
                    <nativeImagePath>${project.build.directory}/${project.artifactId}</nativeImagePath>
                </configuration>
            </pluginExtension>
        </pluginExtensions>
    </configuration>
</plugin>

4. 验证CI环境

确保GitLab CI使用的ghcr.io/graalvm/native-image:ol9-java17-22.3.2镜像包含完整的GraalVM环境,Maven Wrapper可正常调用native-image命令。


内容的提问来源于stack exchange,提问作者anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 14:42:37