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

使用spring-boot-maven-plugin构建Paketo镜像时SBOM缺失问题问询

解决Paketo与Spring Boot Maven插件的SBOM集成问题

一、先搞懂Paketo的SBOM规范变更

Paketo已经弃用了旧的BOM格式,现在要求把SBOM数据写入特定命名的文件:

  • <layer>.sbom.<ext>:对应镜像中某一层的SBOM
  • launch.sbom.<ext>:运行时依赖的SBOM
  • build.sbom.<ext>:构建阶段依赖的SBOM
    这里的<ext>支持json(CycloneDX/SPDX)、xml(CycloneDX)这类常见格式。

二、修复pack命令的SBOM查询问题

pack inspect-image --bom确实已经被弃用,现在正确操作如下:

  1. 先把你的pack CLI更到最新版本,旧版本对新SBOM支持有问题
  2. 使用pack sbom download时,必须指定镜像的完整标签,本地镜像还要加--local参数:
    pack sbom download your-image:latest --local --output ./sbom-output
    

如果还是报错找不到SBOM,说明构建时没正确生成或注入SBOM,接下来解决CycloneDX的集成问题。

三、CycloneDX插件与Paketo的集成配置

核心是让CycloneDX生成的SBOM被Paketo识别并注入镜像,在pom.xml里这么配置:

1. 配置CycloneDX生成符合规范的SBOM到target目录

Paketo的Spring Boot buildpack会自动扫描target/目录下的SBOM文件,所以把输出路径设为target/,文件名严格用launch.sbom.json这类符合规范的名字:

<plugin>
    <groupId>org.cyclonedx</groupId>
    <artifactId>cyclonedx-maven-plugin</artifactId>
    <version>2.7.7</version> <!-- 用最新稳定版就行 -->
    <executions>
        <execution>
            <phase>package</phase> <!-- 在package阶段生成SBOM -->
            <goals>
                <goal>makeAggregateBom</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <outputFormat>json</outputFormat>
        <outputName>launch.sbom</outputName> <!-- 严格遵循Paketo命名规范 -->
        <outputDirectory>${project.build.directory}</outputDirectory> <!-- 输出到target目录 -->
        <includeCompileScope>true</includeCompileScope>
        <includeRuntimeScope>true</includeRuntimeScope>
        <includeTestScope>false</includeTestScope>
    </configuration>
</plugin>

2. 确保Spring Boot插件构建时包含SBOM

Spring Boot Maven插件的build-image目标会自动把target/目录下的文件打包到构建上下文,只要CycloneDX在package阶段生成了launch.sbom.json,Paketo就会自动识别并注入到镜像对应位置。

3. 验证构建流程

执行完整构建命令:

mvn clean package spring-boot:build-image

构建完成后再用pack sbom download测试,就能正常拿到SBOM文件,之前的BOM弃用警告也会消失。

四、常见排查点

  • 检查target/目录下有没有生成launch.sbom.json,确认CycloneDX插件在package阶段执行了
  • 确保Spring Boot Maven插件版本至少2.6+,Paketo buildpacks用最新版,旧版本不支持新SBOM规范
  • 文件名必须严格符合launch.sbom.<ext>这类格式,不然Paketo不会识别

内容的提问来源于stack exchange,提问作者Gonzalo Muñoz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:03:22