SBOM file
This plugin creates Software Bill of Materials (SBOM)
This module has some limitations at the moment:
-
Minimal SBOM, various properties of libraries are missing. e.g. the license.
-
Only JVM ecosystem libraries are reported.
-
Only the CycloneDX JSON format is supported
To declare a module that generates an SBOM extend the mill.contrib.sbom.CycloneDXModuleTests trait when defining your module.
Quickstart:
build.mill//| mvnDeps: ["com.lihaoyi::mill-contrib-sbom:$MILL_VERSION"]
package build
import mill.*
import mill.javalib.*
import mill.contrib.sbom.CycloneDXJavaModule
object `sbom-demo` extends JavaModule with CycloneDXJavaModule {
// An example dependency
override def mvnDeps = Seq(mvn"ch.qos.logback:logback-classic:1.5.12")
}
This provides the sbomJsonFile task that produces a CycloneDX JSON file:
$ mill show sbom-demo.sbomJsonFile # Creates the SBOM file in the JSON format
Uploading to Dependency Track
Uploading the SBOM to Dependency Track is supported.
Add the DependencyTrackModule and provide the necessary details:
build.mill//| mvnDeps: ["com.lihaoyi::mill-contrib-sbom:$MILL_VERSION"]
package build
import mill.*
import mill.javalib.*
import mill.contrib.sbom.CycloneDXModule
import mill.contrib.sbom.upload.DependencyTrack
object `sbom-demo` extends JavaModule with CycloneDXJavaModule with DependencyTrackModule {
def depTrackUrl = "http://localhost:8081"
def depTrackProjectID = "7c1a9efd-8f05-4cdb-bb16-602cb5c1d6e0"
def depTrackApiKey = "odt_rTKFk9MCDtWpdun1VKUUfsOsdOumo96q"
// An example dependency
override def mvnDeps = Seq(ivy"ch.qos.logback:logback-classic:1.5.12")
}
After that you upload the SBOM:
./mill sbom-demo.sbomUpload