Add SBOM publishing for kotlin-test libraries
^KTI-1273
This commit is contained in:
committed by
Space Team
parent
9cfc66ae77
commit
53ce5c22ca
@@ -20,8 +20,9 @@ fun Project.configureSbom(
|
|||||||
target: String? = null,
|
target: String? = null,
|
||||||
documentName: String? = null,
|
documentName: String? = null,
|
||||||
gradleConfigurations: Iterable<String> = setOf("runtimeClasspath"),
|
gradleConfigurations: Iterable<String> = setOf("runtimeClasspath"),
|
||||||
publication: NamedDomainObjectProvider<MavenPublication>? = null
|
publication: NamedDomainObjectProvider<MavenPublication>? = null,
|
||||||
): TaskProvider<SpdxSbomTask> {
|
): TaskProvider<SpdxSbomTask> {
|
||||||
|
assert(target == null && publication != null) { "provided publication will be ignored when target is null" }
|
||||||
val project = this
|
val project = this
|
||||||
val targetName = target ?: "${mainPublicationName}Publication"
|
val targetName = target ?: "${mainPublicationName}Publication"
|
||||||
apply<SpdxSbomPlugin>()
|
apply<SpdxSbomPlugin>()
|
||||||
@@ -69,10 +70,8 @@ fun Project.configureSbom(
|
|||||||
mainPublication.artifact(sbomArtifact)
|
mainPublication.artifact(sbomArtifact)
|
||||||
}
|
}
|
||||||
} else if (publication != null) {
|
} else if (publication != null) {
|
||||||
pluginManager.withPlugin("kotlin-build-publishing") {
|
publication.configure {
|
||||||
publication.configure {
|
artifact(sbomArtifact)
|
||||||
artifact(sbomArtifact)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ val componentFactory = objects.newInstance<ComponentsFactoryAccess>().factory
|
|||||||
|
|
||||||
val jvmApi by configurations.creating {
|
val jvmApi by configurations.creating {
|
||||||
isCanBeConsumed = true
|
isCanBeConsumed = true
|
||||||
isCanBeResolved = false
|
isCanBeResolved = true
|
||||||
attributes {
|
attributes {
|
||||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("java-api"))
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("java-api"))
|
||||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.jvm)
|
attribute(KotlinPlatformType.attribute, KotlinPlatformType.jvm)
|
||||||
@@ -30,7 +30,7 @@ val jvmApi by configurations.creating {
|
|||||||
|
|
||||||
val jvmRuntime by configurations.creating {
|
val jvmRuntime by configurations.creating {
|
||||||
isCanBeConsumed = true
|
isCanBeConsumed = true
|
||||||
isCanBeResolved = false
|
isCanBeResolved = true
|
||||||
attributes {
|
attributes {
|
||||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("java-runtime"))
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("java-runtime"))
|
||||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.jvm)
|
attribute(KotlinPlatformType.attribute, KotlinPlatformType.jvm)
|
||||||
@@ -40,7 +40,7 @@ val jvmRuntime by configurations.creating {
|
|||||||
|
|
||||||
val jsApiVariant by configurations.creating {
|
val jsApiVariant by configurations.creating {
|
||||||
isCanBeConsumed = false
|
isCanBeConsumed = false
|
||||||
isCanBeResolved = false
|
isCanBeResolved = true
|
||||||
attributes {
|
attributes {
|
||||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
|
||||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.js)
|
attribute(KotlinPlatformType.attribute, KotlinPlatformType.js)
|
||||||
@@ -48,7 +48,7 @@ val jsApiVariant by configurations.creating {
|
|||||||
}
|
}
|
||||||
val jsRuntimeVariant by configurations.creating {
|
val jsRuntimeVariant by configurations.creating {
|
||||||
isCanBeConsumed = false
|
isCanBeConsumed = false
|
||||||
isCanBeResolved = false
|
isCanBeResolved = true
|
||||||
attributes {
|
attributes {
|
||||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-runtime"))
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-runtime"))
|
||||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.js)
|
attribute(KotlinPlatformType.attribute, KotlinPlatformType.js)
|
||||||
@@ -58,7 +58,7 @@ val jsRuntimeVariant by configurations.creating {
|
|||||||
|
|
||||||
val wasmApiVariant by configurations.creating {
|
val wasmApiVariant by configurations.creating {
|
||||||
isCanBeConsumed = false
|
isCanBeConsumed = false
|
||||||
isCanBeResolved = false
|
isCanBeResolved = true
|
||||||
attributes {
|
attributes {
|
||||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
|
||||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
|
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
|
||||||
@@ -66,7 +66,7 @@ val wasmApiVariant by configurations.creating {
|
|||||||
}
|
}
|
||||||
val wasmRuntimeVariant by configurations.creating {
|
val wasmRuntimeVariant by configurations.creating {
|
||||||
isCanBeConsumed = false
|
isCanBeConsumed = false
|
||||||
isCanBeResolved = false
|
isCanBeResolved = true
|
||||||
attributes {
|
attributes {
|
||||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-runtime"))
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-runtime"))
|
||||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
|
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
|
||||||
@@ -76,7 +76,7 @@ val wasmRuntimeVariant by configurations.creating {
|
|||||||
|
|
||||||
val nativeApiVariant by configurations.creating {
|
val nativeApiVariant by configurations.creating {
|
||||||
isCanBeConsumed = false
|
isCanBeConsumed = false
|
||||||
isCanBeResolved = false
|
isCanBeResolved = true
|
||||||
attributes {
|
attributes {
|
||||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
|
||||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.native)
|
attribute(KotlinPlatformType.attribute, KotlinPlatformType.native)
|
||||||
@@ -85,7 +85,7 @@ val nativeApiVariant by configurations.creating {
|
|||||||
|
|
||||||
val commonVariant by configurations.creating {
|
val commonVariant by configurations.creating {
|
||||||
isCanBeConsumed = false
|
isCanBeConsumed = false
|
||||||
isCanBeResolved = false
|
isCanBeResolved = true
|
||||||
attributes {
|
attributes {
|
||||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
|
||||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.common)
|
attribute(KotlinPlatformType.attribute, KotlinPlatformType.common)
|
||||||
@@ -113,8 +113,8 @@ dependencies {
|
|||||||
jvmApi(project(":kotlin-stdlib"))
|
jvmApi(project(":kotlin-stdlib"))
|
||||||
jsApiVariant("$group:kotlin-test-js:$version")
|
jsApiVariant("$group:kotlin-test-js:$version")
|
||||||
wasmApiVariant("$group:kotlin-test-wasm:$version")
|
wasmApiVariant("$group:kotlin-test-wasm:$version")
|
||||||
commonVariant("$group:kotlin-test-common:$version")
|
commonVariant(project(":kotlin-test:kotlin-test-common"))
|
||||||
commonVariant("$group:kotlin-test-annotations-common:$version")
|
commonVariant(project(":kotlin-test:kotlin-test-annotations-common"))
|
||||||
kotlinTestCommonSources(project(":kotlin-test:kotlin-test-common"))
|
kotlinTestCommonSources(project(":kotlin-test:kotlin-test-common"))
|
||||||
kotlinTestJvmSources(project(":kotlin-test:kotlin-test-jvm"))
|
kotlinTestJvmSources(project(":kotlin-test:kotlin-test-jvm"))
|
||||||
}
|
}
|
||||||
@@ -200,7 +200,7 @@ jvmTestFrameworks.forEach { framework ->
|
|||||||
val (apiElements, runtimeElements) = listOf("api", "runtime").map { usage ->
|
val (apiElements, runtimeElements) = listOf("api", "runtime").map { usage ->
|
||||||
configurations.create("${framework}${usage.capitalize()}") {
|
configurations.create("${framework}${usage.capitalize()}") {
|
||||||
isCanBeConsumed = true
|
isCanBeConsumed = true
|
||||||
isCanBeResolved = false
|
isCanBeResolved = true
|
||||||
attributes {
|
attributes {
|
||||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("java-$usage"))
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("java-$usage"))
|
||||||
}
|
}
|
||||||
@@ -256,7 +256,7 @@ commonVariant.apply {
|
|||||||
val (jsApi, jsRuntime) = listOf("api", "runtime").map { usage ->
|
val (jsApi, jsRuntime) = listOf("api", "runtime").map { usage ->
|
||||||
configurations.create("js${usage.capitalize()}") {
|
configurations.create("js${usage.capitalize()}") {
|
||||||
isCanBeConsumed = true
|
isCanBeConsumed = true
|
||||||
isCanBeResolved = false
|
isCanBeResolved = true
|
||||||
attributes {
|
attributes {
|
||||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-$usage"))
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-$usage"))
|
||||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.js)
|
attribute(KotlinPlatformType.attribute, KotlinPlatformType.js)
|
||||||
@@ -287,7 +287,7 @@ val jsComponent = componentFactory.adhoc("js").apply {
|
|||||||
val (wasmApi, wasmRuntime) = listOf("api", "runtime").map { usage ->
|
val (wasmApi, wasmRuntime) = listOf("api", "runtime").map { usage ->
|
||||||
configurations.create("wasm${usage.capitalize()}") {
|
configurations.create("wasm${usage.capitalize()}") {
|
||||||
isCanBeConsumed = true
|
isCanBeConsumed = true
|
||||||
isCanBeResolved = false
|
isCanBeResolved = true
|
||||||
attributes {
|
attributes {
|
||||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-$usage"))
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-$usage"))
|
||||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
|
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
|
||||||
@@ -321,7 +321,7 @@ val wasmComponent = componentFactory.adhoc("wasm").apply {
|
|||||||
|
|
||||||
val commonMetadata by configurations.creating {
|
val commonMetadata by configurations.creating {
|
||||||
isCanBeConsumed = false
|
isCanBeConsumed = false
|
||||||
isCanBeResolved = false
|
isCanBeResolved = true
|
||||||
attributes {
|
attributes {
|
||||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
|
||||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.common)
|
attribute(KotlinPlatformType.attribute, KotlinPlatformType.common)
|
||||||
@@ -329,7 +329,7 @@ val commonMetadata by configurations.creating {
|
|||||||
}
|
}
|
||||||
val annotationsMetadata by configurations.creating {
|
val annotationsMetadata by configurations.creating {
|
||||||
isCanBeConsumed = false
|
isCanBeConsumed = false
|
||||||
isCanBeResolved = false
|
isCanBeResolved = true
|
||||||
attributes {
|
attributes {
|
||||||
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
|
||||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.common)
|
attribute(KotlinPlatformType.attribute, KotlinPlatformType.common)
|
||||||
@@ -362,7 +362,7 @@ configureDefaultPublishing()
|
|||||||
|
|
||||||
publishing {
|
publishing {
|
||||||
publications {
|
publications {
|
||||||
create("main", MavenPublication::class) {
|
val mainPublication = register("main", MavenPublication::class) {
|
||||||
from(rootComponent)
|
from(rootComponent)
|
||||||
artifact(combinedSourcesJar)
|
artifact(combinedSourcesJar)
|
||||||
// Remove all optional dependencies from the root pom
|
// Remove all optional dependencies from the root pom
|
||||||
@@ -376,39 +376,63 @@ publishing {
|
|||||||
configureKotlinPomAttributes(project, "Kotlin Test Multiplatform library")
|
configureKotlinPomAttributes(project, "Kotlin Test Multiplatform library")
|
||||||
suppressAllPomMetadataWarnings()
|
suppressAllPomMetadataWarnings()
|
||||||
}
|
}
|
||||||
|
configureSbom(
|
||||||
|
"Main", "kotlin-test",
|
||||||
|
setOf(jvmRuntime.name, commonVariant.name), mainPublication
|
||||||
|
)
|
||||||
jvmTestFrameworks.forEach { framework ->
|
jvmTestFrameworks.forEach { framework ->
|
||||||
create(framework, MavenPublication::class) {
|
val publication = register(framework, MavenPublication::class) {
|
||||||
artifactId = "kotlin-test-$framework"
|
artifactId = "kotlin-test-$framework"
|
||||||
from(components[framework])
|
from(components[framework])
|
||||||
artifact(tasks.getByPath(":kotlin-test:kotlin-test-$framework:sourcesJar") as Jar)
|
artifact(tasks.getByPath(":kotlin-test:kotlin-test-$framework:sourcesJar") as Jar)
|
||||||
configureKotlinPomAttributes(project, "Kotlin Test Support for $framework")
|
configureKotlinPomAttributes(project, "Kotlin Test Support for $framework")
|
||||||
suppressAllPomMetadataWarnings()
|
suppressAllPomMetadataWarnings()
|
||||||
}
|
}
|
||||||
|
configureSbom(
|
||||||
|
framework.capitalize(), "kotlin-test-$framework",
|
||||||
|
setOf("${framework}Api", commonVariant.name), publication
|
||||||
|
)
|
||||||
}
|
}
|
||||||
create("js", MavenPublication::class) {
|
val kotlinTestJsPublication = register("js", MavenPublication::class) {
|
||||||
artifactId = "kotlin-test-js"
|
artifactId = "kotlin-test-js"
|
||||||
from(jsComponent)
|
from(jsComponent)
|
||||||
artifact(tasks.getByPath(":kotlin-test:kotlin-test-js:sourcesJar") as Jar)
|
artifact(tasks.getByPath(":kotlin-test:kotlin-test-js:sourcesJar") as Jar)
|
||||||
configureKotlinPomAttributes(project, "Kotlin Test for JS")
|
configureKotlinPomAttributes(project, "Kotlin Test for JS")
|
||||||
}
|
}
|
||||||
create("wasm", MavenPublication::class) {
|
configureSbom(
|
||||||
|
"Js", "kotlin-test-js",
|
||||||
|
setOf(jsRuntime.name, commonVariant.name), kotlinTestJsPublication
|
||||||
|
)
|
||||||
|
val kotlinTestWasmPublication = register("wasm", MavenPublication::class) {
|
||||||
artifactId = "kotlin-test-wasm"
|
artifactId = "kotlin-test-wasm"
|
||||||
from(wasmComponent)
|
from(wasmComponent)
|
||||||
artifact(tasks.getByPath(":kotlin-test:kotlin-test-wasm:sourcesJar") as Jar)
|
artifact(tasks.getByPath(":kotlin-test:kotlin-test-wasm:sourcesJar") as Jar)
|
||||||
configureKotlinPomAttributes(project, "Kotlin Test for WASM", packaging = "klib")
|
configureKotlinPomAttributes(project, "Kotlin Test for WASM", packaging = "klib")
|
||||||
}
|
}
|
||||||
create("common", MavenPublication::class) {
|
configureSbom(
|
||||||
|
"Wasm", "kotlin-test-wasm",
|
||||||
|
setOf(wasmRuntime.name, commonVariant.name), kotlinTestWasmPublication
|
||||||
|
)
|
||||||
|
val kotlinTestCommonPublication = register("common", MavenPublication::class) {
|
||||||
artifactId = "kotlin-test-common"
|
artifactId = "kotlin-test-common"
|
||||||
from(commonMetadataComponent)
|
from(commonMetadataComponent)
|
||||||
artifact(tasks.getByPath(":kotlin-test:kotlin-test-common:sourcesJar") as Jar)
|
artifact(tasks.getByPath(":kotlin-test:kotlin-test-common:sourcesJar") as Jar)
|
||||||
configureKotlinPomAttributes(project, "Kotlin Test Common")
|
configureKotlinPomAttributes(project, "Kotlin Test Common")
|
||||||
}
|
}
|
||||||
create("annotationsCommon", MavenPublication::class) {
|
configureSbom(
|
||||||
|
"Common", "kotlin-test-common",
|
||||||
|
setOf(commonMetadata.name), kotlinTestCommonPublication
|
||||||
|
)
|
||||||
|
val annotationsCommonPublication = register("annotationsCommon", MavenPublication::class) {
|
||||||
artifactId = "kotlin-test-annotations-common"
|
artifactId = "kotlin-test-annotations-common"
|
||||||
from(annotationsMetadataComponent)
|
from(annotationsMetadataComponent)
|
||||||
artifact(tasks.getByPath(":kotlin-test:kotlin-test-annotations-common:sourcesJar") as Jar)
|
artifact(tasks.getByPath(":kotlin-test:kotlin-test-annotations-common:sourcesJar") as Jar)
|
||||||
configureKotlinPomAttributes(project, "Kotlin Test Common")
|
configureKotlinPomAttributes(project, "Kotlin Test Common")
|
||||||
}
|
}
|
||||||
|
configureSbom(
|
||||||
|
"AnnotationsCommon", "kotlin-test-annotations-common",
|
||||||
|
setOf(annotationsMetadata.name), annotationsCommonPublication
|
||||||
|
)
|
||||||
withType<MavenPublication> {
|
withType<MavenPublication> {
|
||||||
artifact(emptyJavadocJar)
|
artifact(emptyJavadocJar)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user