Bundles the latest version of the SPDX Licence List in a JSON format as provided here.
Additionaly, it comes with a small Kotlin library powered by Kotlin Serialization which provides a convenient and typed access to that catalog.
So for example, for the Apache-2.0
license you have access to the following data:
SpdxLicense(
reference=https://spdx.org/licenses/Apache-2.0.html,
isDeprecatedLicenseId=false,
detailsUrl=https://spdx.org/licenses/Apache-2.0.json,
referenceNumber=382,
name=Apache License 2.0,
licenseId=Apache-2.0,
seeAlso=[https://www.apache.org/licenses/LICENSE-2.0, https://opensource.org/licenses/Apache-2.0],
isOsiApproved=true,
isFsfLibre=true
)
This library is being pushed to Maven Central, so you can grab it i.e. with Gradle:
repositories {
mavenCentral()
}
dependencies {
implementation('io.cloudflight.license.spdx:spdx-catalog:3.16.6')
}
Your entry class is the singleton io.cloudflight.license.spdx.SpdxLicenses
.
For example:
import io.cloudflight.license.spdx.SpdxLicenses
println(SpdxLicenses.findById("0BSD"))
val license = SpdxLicenses.findByDescription("The Apache Software License, Version 2.0")
println(license?.licenseId)
will print BSD Zero Clause License
and
import io.cloudflight.license.spdx.SpdxLicenses
val license = SpdxLicenses.findByDescription("The Apache Software License, Version 2.0")
println(license?.licenseId)
will print Apache-2.0
.
The library also normalizes different variants of license description names, therefore also the following code works:
import io.cloudflight.license.spdx.SpdxLicenses
val license = SpdxLicenses.findByDescription("Apache License v2.0")
println(license?.licenseId)
This will print Apache-2.0
as well.
Always keep the version of that SPDX list in sync with the version of this module.