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

cdxgen无法检测Gradle构建依赖,如何获取含构建依赖的BOM?

获取包含Gradle构建依赖的CycloneDX BOM文件

方法一:配置CycloneDX Gradle插件捕获构建脚本依赖

官方org.cyclonedx.bom插件默认仅收集项目主代码依赖,需显式开启构建脚本依赖扫描功能。在项目的build.gradle或build.gradle.kts中添加以下配置:

Groovy DSL 配置

plugins {
    id("org.cyclonedx.bom") version "1.8.2"
}

cyclonedxBom {
    // 启用构建脚本依赖收集
    includeBuildScriptDependencies = true
    // 指定输出格式为JSON,也可设为XML
    outputFormat = "json"
    outputName = "bom-with-build-deps"
}

Kotlin DSL 配置

plugins {
    id("org.cyclonedx.bom") version "1.8.2"
}

cyclonedxBom {
    includeBuildScriptDependencies.set(true)
    outputFormat.set(org.cyclonedx.gradle.CycloneDxExtension.Format.JSON)
    outputName.set("bom-with-build-deps")
}

执行以下命令生成包含构建依赖的BOM:

./gradlew cyclonedxBom

生成的文件会包含org.jmailen.kotlinter这类构建插件及其关联依赖。

方法二:调整cdxgen参数适配构建依赖扫描

cdxgen默认对Gradle构建环境依赖的解析可能不完整,可尝试以下方式优化:

  1. 直接指定扫描buildEnvironment任务:
cdxgen -t java -o bom.json --gradle-task buildEnvironment
  1. 若仍缺失特定插件,手动通过--extra-dep参数补充:
cdxgen -t java -o bom.json --extra-dep org.jmailen.kotlinter:kotlinter-gradle:4.2.0

方法三:自定义Gradle任务导出依赖后合并生成BOM

如果上述工具仍无法满足需求,可先通过自定义Gradle任务导出所有构建依赖坐标,再用CycloneDX CLI合并生成完整BOM:

自定义导出任务(Groovy DSL)

task exportBuildDeps {
    doLast {
        def depList = []
        project.buildscript.configurations.classpath.resolvedConfiguration.firstLevelModuleDependencies.each { dep ->
            depList.add("${dep.moduleGroup}:${dep.moduleName}:${dep.moduleVersion}")
        }
        new File(project.rootDir, "build-deps.txt").text = depList.join("\n")
    }
}

执行任务导出构建依赖:

./gradlew exportBuildDeps

随后用CycloneDX CLI工具,将主依赖清单与构建依赖清单合并为完整BOM(需提前生成主依赖BOM文件):

cyclonedx-cli merge --input-files main-bom.json build-deps.json --output full-bom.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:02:42