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