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

如何通过init.gradle.kts配置CycloneDX Gradle插件?

用init.gradle.kts配置cyclonedx-gradle-plugin任务属性方案

直接用init脚本就能完成所有配置,无需修改项目本地的build.gradle.kts。以下是完整的实现方案:

完整的init.gradle.kts脚本

// 配置插件仓库,确保能拉取到cyclonedx插件
pluginManagement {
    repositories {
        mavenCentral()
        gradlePluginPortal()
    }
}

// 引入cyclonedx-gradle-plugin到init脚本类路径
initscript {
    repositories {
        mavenCentral()
        gradlePluginPortal()
    }
    dependencies {
        classpath("org.cyclonedx:cyclonedx-gradle-plugin:1.7.4") // 替换为你需要的版本
    }
}

// 对所有项目(含子项目)应用插件并配置任务
gradle.allprojects {
    // 应用cyclonedx bom插件
    apply(plugin = "org.cyclonedx.bom")

    // 统一配置所有CycloneDx类型的任务
    tasks.withType<org.cyclonedx.gradle.CycloneDxTask>().configureEach {
        // 配置BOM schema版本
        schemaVersion = "1.4"
        // 设置项目类型,可选library/application/container等
        projectType = "library"
        // 指定要包含的依赖配置,按需调整
        includeConfigs = listOf("runtimeClasspath", "compileClasspath")
        // 可选:设置输出格式,支持JSON/XML
        outputFormat = org.cyclonedx.gradle.CycloneDxTask.Format.JSON
        // 可选:自定义输出文件名
        outputName = "cyclonedx-bom"
    }

    // 若需对单个任务做差异化配置,比如单独调整cyclonedxDirectBom
    tasks.named<org.cyclonedx.gradle.CycloneDxTask>("cyclonedxDirectBom") {
        includeConfigs = listOf("runtimeClasspath") // 仅包含直接运行时依赖
    }
}

关键配置说明

  • initscript块:将cyclonedx插件加入init脚本的类路径,确保所有项目都能加载到插件,无需本地项目声明依赖。
  • gradle.allprojects:遍历所有项目(包括子项目)自动应用插件,避免逐个项目配置。
  • tasks.withType.configureEach:批量配置所有CycloneDxTask类型的任务,同时覆盖cyclonedxBom和cyclonedxDirectBom的通用属性。
  • 单独任务配置:如果需要针对特定任务做差异化设置,用tasks.named单独调整即可。

GitLab CI中使用方式

在CI脚本里执行gradle任务时,指定该init脚本路径即可:

dependency-track-scan:
  stage: dependency-analysis
  script:
    # 生成BOM文件
    - ./gradlew cyclonedxBom --init-script ./path/to/your/init.gradle.kts
    # 上传BOM到Dependency Track实例
    - curl -X POST 
        -H "X-Api-Key: $DT_API_KEY" 
        -F "bom=@build/reports/bom/cyclonedx-bom.json" 
        "$DT_BASE_URL/api/v1/bom"
  variables:
    DT_API_KEY: $DEPENDENCY_TRACK_API_KEY
    DT_BASE_URL: https://your-dependency-track-instance.com

注意事项

  • 插件版本:请替换为最新的cyclonedx-gradle-plugin版本,避免兼容性问题。
  • includeConfigs:根据项目的依赖配置调整,比如Spring Boot项目可能需要指定bootRuntimeClasspath。
  • 任务类路径:不同插件版本的任务类路径可能略有差异,若报错请检查类路径是否正确(旧版本可能为org.cyclonedx.gradle.tasks.CycloneDxTask)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 23:52:33