Add SBOM configuration for all published artifacts by default
This commit is contained in:
committed by
Space Team
parent
e0a477f16d
commit
303b01b89b
@@ -8,14 +8,13 @@ import org.gradle.api.artifacts.Configuration
|
|||||||
import org.gradle.api.artifacts.ConfigurationContainer
|
import org.gradle.api.artifacts.ConfigurationContainer
|
||||||
import org.gradle.api.artifacts.PublishArtifact
|
import org.gradle.api.artifacts.PublishArtifact
|
||||||
import org.gradle.api.artifacts.component.ProjectComponentIdentifier
|
import org.gradle.api.artifacts.component.ProjectComponentIdentifier
|
||||||
import org.gradle.api.attributes.LibraryElements
|
|
||||||
import org.gradle.api.attributes.Usage
|
|
||||||
import org.gradle.api.component.AdhocComponentWithVariants
|
import org.gradle.api.component.AdhocComponentWithVariants
|
||||||
import org.gradle.api.file.ArchiveOperations
|
import org.gradle.api.file.ArchiveOperations
|
||||||
import org.gradle.api.file.DuplicatesStrategy
|
import org.gradle.api.file.DuplicatesStrategy
|
||||||
import org.gradle.api.plugins.BasePluginExtension
|
import org.gradle.api.plugins.BasePluginExtension
|
||||||
import org.gradle.api.plugins.JavaPlugin
|
import org.gradle.api.plugins.JavaPlugin
|
||||||
import org.gradle.api.plugins.JavaPlugin.*
|
import org.gradle.api.plugins.JavaPlugin.JAVADOC_ELEMENTS_CONFIGURATION_NAME
|
||||||
|
import org.gradle.api.plugins.JavaPlugin.SOURCES_ELEMENTS_CONFIGURATION_NAME
|
||||||
import org.gradle.api.plugins.JavaPluginExtension
|
import org.gradle.api.plugins.JavaPluginExtension
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.api.publish.PublishingExtension
|
import org.gradle.api.publish.PublishingExtension
|
||||||
@@ -271,7 +270,7 @@ fun Project.standardPublicJars() {
|
|||||||
javadocJar()
|
javadocJar()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Project.publish(moduleMetadata: Boolean = false, configure: MavenPublication.() -> Unit = { }) {
|
fun Project.publish(moduleMetadata: Boolean = false, sbom: Boolean = true, configure: MavenPublication.() -> Unit = { }) {
|
||||||
apply<KotlinBuildPublishingPlugin>()
|
apply<KotlinBuildPublishingPlugin>()
|
||||||
|
|
||||||
if (!moduleMetadata) {
|
if (!moduleMetadata) {
|
||||||
@@ -284,6 +283,9 @@ fun Project.publish(moduleMetadata: Boolean = false, configure: MavenPublication
|
|||||||
?.publications
|
?.publications
|
||||||
?.findByName(mainPublicationName) as MavenPublication
|
?.findByName(mainPublicationName) as MavenPublication
|
||||||
publication.configure()
|
publication.configure()
|
||||||
|
if (sbom) {
|
||||||
|
configureSbom()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Project.idePluginDependency(block: () -> Unit) {
|
fun Project.idePluginDependency(block: () -> Unit) {
|
||||||
|
|||||||
@@ -46,8 +46,7 @@ fun Project.configureSbom(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val spdxSbomTask = tasks.named<SpdxSbomTask>("spdxSbomFor$targetName")
|
val spdxSbomTask = tasks.named<SpdxSbomTask>("spdxSbomFor$targetName")
|
||||||
val sbomFile = spdxSbomTask.map { it.outputDirectory.file("$targetName.spdx.json") }
|
val sbomFile = layout.buildDirectory.file("spdx/$targetName.spdx.json")
|
||||||
|
|
||||||
val sbomCfg = configurations.maybeCreate("sbomFor$targetName").apply {
|
val sbomCfg = configurations.maybeCreate("sbomFor$targetName").apply {
|
||||||
isCanBeResolved = false
|
isCanBeResolved = false
|
||||||
isCanBeConsumed = true
|
isCanBeConsumed = true
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ task preparePublication {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ext.configurePublishing = { Project project, configure = { } ->
|
ext.configurePublishing = { Project project, configure = { } ->
|
||||||
ArtifactsKt.publish(project, false) { publication ->
|
ArtifactsKt.publish(project, false, false) { publication ->
|
||||||
configure.delegate = publication
|
configure.delegate = publication
|
||||||
configure()
|
configure()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ description = 'Kotlin Common Standard Library'
|
|||||||
|
|
||||||
apply plugin: 'kotlin-platform-common'
|
apply plugin: 'kotlin-platform-common'
|
||||||
|
|
||||||
configureSbom(project)
|
|
||||||
configurePublishing(project)
|
configurePublishing(project)
|
||||||
|
|
||||||
JvmToolchain.updateJvmTarget(project, "1.8")
|
JvmToolchain.updateJvmTarget(project, "1.8")
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ apply plugin: 'kotlin'
|
|||||||
|
|
||||||
JvmToolchain.configureJvmToolchain(project, JdkMajorVersion.JDK_1_8)
|
JvmToolchain.configureJvmToolchain(project, JdkMajorVersion.JDK_1_8)
|
||||||
|
|
||||||
configureSbom(project)
|
|
||||||
configurePublishing(project)
|
configurePublishing(project)
|
||||||
configureSourcesJar()
|
configureSourcesJar()
|
||||||
configureJavadocJar()
|
configureJavadocJar()
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ description = 'Kotlin Standard Library JDK 8 extension'
|
|||||||
|
|
||||||
apply plugin: 'kotlin'
|
apply plugin: 'kotlin'
|
||||||
|
|
||||||
configureSbom(project)
|
|
||||||
configurePublishing(project)
|
configurePublishing(project)
|
||||||
configureSourcesJar()
|
configureSourcesJar()
|
||||||
configureJavadocJar()
|
configureJavadocJar()
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ archivesBaseName = 'kotlin-stdlib'
|
|||||||
|
|
||||||
JvmToolchain.configureJvmToolchain(project, JdkMajorVersion.JDK_1_8)
|
JvmToolchain.configureJvmToolchain(project, JdkMajorVersion.JDK_1_8)
|
||||||
|
|
||||||
configureSbom(project)
|
|
||||||
configurePublishing(project)
|
configurePublishing(project)
|
||||||
configureJavadocJar()
|
configureJavadocJar()
|
||||||
configureSourcesJar()
|
configureSourcesJar()
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ val compileTestDevelopmentExecutableKotlinWasm = tasks.named<KotlinJsIrLink>("co
|
|||||||
val runtimeElements by configurations.creating {}
|
val runtimeElements by configurations.creating {}
|
||||||
val apiElements by configurations.creating {}
|
val apiElements by configurations.creating {}
|
||||||
|
|
||||||
publish {
|
publish(sbom = false) {
|
||||||
pom.packaging = "klib"
|
pom.packaging = "klib"
|
||||||
artifact(tasks.named("wasmJar")) {
|
artifact(tasks.named("wasmJar")) {
|
||||||
extension = "klib"
|
extension = "klib"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ plugins {
|
|||||||
id("com.github.node-gradle.node") version "3.2.1"
|
id("com.github.node-gradle.node") version "3.2.1"
|
||||||
}
|
}
|
||||||
|
|
||||||
publish()
|
publish(sbom = false)
|
||||||
|
|
||||||
val default = configurations.getByName(Dependency.DEFAULT_CONFIGURATION)
|
val default = configurations.getByName(Dependency.DEFAULT_CONFIGURATION)
|
||||||
default.extendsFrom(configurations.publishedRuntime.get())
|
default.extendsFrom(configurations.publishedRuntime.get())
|
||||||
|
|||||||
@@ -250,7 +250,6 @@ dependencies {
|
|||||||
fatJarContentsStripVersions(commonDependency("one.util:streamex")) { isTransitive = false }
|
fatJarContentsStripVersions(commonDependency("one.util:streamex")) { isTransitive = false }
|
||||||
}
|
}
|
||||||
|
|
||||||
configureSbom() // sbom for main maven publication
|
|
||||||
publish()
|
publish()
|
||||||
|
|
||||||
// sbom for dist
|
// sbom for dist
|
||||||
@@ -449,7 +448,7 @@ distTask<Copy>("dist") {
|
|||||||
|
|
||||||
from(buildNumber)
|
from(buildNumber)
|
||||||
from(distStdlibMinimalForTests)
|
from(distStdlibMinimalForTests)
|
||||||
from(distSbomTask.map { it.outputDirectory.file("dist.spdx.json") }) {
|
from(distSbomTask.map { it.outputDirectory.file("Dist.spdx.json") }) {
|
||||||
rename(".*", "${project.name}-${project.version}.spdx.json")
|
rename(".*", "${project.name}-${project.version}.spdx.json")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user