CycloneDX / CycloneDX/cyclonedx-maven-plugin

Build the SBOM incrementally through the lifecycle

Open
#683 2 comments 0 reactions 0 assignees View on GitHub
major-rfe
Dominant language
Java
Stars
385
Forks
107
Avg merge
17h 31m
Merged PRs (30d)
7

Description

SBOMs should be built the way artifacts are: step by step, each stage transforming the output of the previous one. Today the BOM is derived in a single pass from the resolved dependency graph, so anything the POM cannot express is invisible: shaded content, native libraries, bundled front-end assets, annotation processor output.

Sketch of the model, as small goals bound to lifecycle phases:

1. `compile`: record pedigree of the compiled output, such as the source Package URL (or SWHID) and the annotation processors that ran.
2. `package`, after JAR: resolve upstream SBOMs for dependencies whose content is not expressible in a `pom.xml`, and add their components with `isExternal` set to `true`.
3. `package`, after shade / assembly / WAR: set `isExternal` to `false` on the components that this step has physically embedded.

Would close #472 as a side effect.

Contributor guide

Open the contributing guide

Research direction

Start by tracing how the current BOM is derived from the resolved dependency graph and how Maven's compile and package phases are handled. Implement the lifecycle stages described: record compile-time provenance, resolve upstream SBOM components after JAR packaging, and mark physically embedded components after shade, assembly, or WAR packaging. Done means the incremental output captures content not expressible in the POM and supports the stated isExternal transitions.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.