Skip to content

Commit 7ffb02c

Browse files
committed
Fix setupRedirection
1 parent ff41fdb commit 7ffb02c

2 files changed

Lines changed: 22 additions & 3 deletions

File tree

buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXImplPlugin.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,14 @@ import org.gradle.api.Project
2929
import org.gradle.api.component.SoftwareComponentFactory
3030
import org.gradle.kotlin.dsl.apply
3131
import org.gradle.kotlin.dsl.create
32+
import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
3233
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
3334
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
3435
import org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper
3536
import org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinTarget
3637
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
3738
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinSoftwareComponentWithCoordinatesAndPublication
39+
import org.jetbrains.kotlin.gradle.plugin.mpp.external.DecoratedExternalKotlinTarget
3840
import org.jetbrains.kotlin.konan.target.KonanTarget
3941

4042
open class JetBrainsExtensions(
@@ -197,6 +199,7 @@ class JetBrainsAndroidXImplPlugin @Inject constructor(
197199
}
198200
}
199201

202+
@OptIn(ExternalKotlinTargetApi::class)
200203
private fun enableArtifactRedirectionPublishing(project: Project) {
201204
val redirection = project.artifactRedirection() ?: return
202205

@@ -221,7 +224,11 @@ private fun enableArtifactRedirectionPublishing(project: Project) {
221224
@OptIn(InternalKotlinGradlePluginApi::class)
222225
ext.targets.all { target ->
223226
if (target.name.lowercase() in redirection.targetNames) {
224-
project.publishAndroidxReference(target as AbstractKotlinTarget, newRootComponent)
227+
if (target is AbstractKotlinTarget) {
228+
project.setupRedirection(target, newRootComponent)
229+
} else if (target is DecoratedExternalKotlinTarget) {
230+
project.setupRedirection(target, newRootComponent)
231+
}
225232
}
226233
}
227234
}

buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXRedirectingPublicationHelpers.kt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ import org.gradle.api.internal.component.SoftwareComponentInternal
4141
import org.gradle.api.internal.component.UsageContext
4242
import org.gradle.api.publish.maven.MavenPublication
4343
import org.gradle.api.publish.maven.tasks.AbstractPublishToMaven
44+
import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
4445
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
46+
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetComponent
47+
import org.jetbrains.kotlin.gradle.plugin.mpp.external.DecoratedExternalKotlinTarget
4548

4649
/**
4750
* Usage that should be added to rootSoftwareComponent to represent target-specific variants
@@ -61,8 +64,17 @@ internal class CustomUsage(
6164
override fun getGlobalExcludes(): Set<ExcludeRule> = emptySet()
6265
}
6366

67+
@OptIn(InternalKotlinGradlePluginApi::class, ExternalKotlinTargetApi::class)
68+
internal fun Project.setupRedirection(target: DecoratedExternalKotlinTarget, newRootComponent: CustomRootComponent) {
69+
setupRedirection(target.kotlinComponents, newRootComponent)
70+
}
71+
@OptIn(InternalKotlinGradlePluginApi::class)
72+
internal fun Project.setupRedirection(target: AbstractKotlinTarget, newRootComponent: CustomRootComponent) {
73+
setupRedirection(target.kotlinComponents, newRootComponent)
74+
}
75+
6476
@OptIn(InternalKotlinGradlePluginApi::class)
65-
internal fun Project.publishAndroidxReference(target: AbstractKotlinTarget, newRootComponent: CustomRootComponent) {
77+
internal fun Project.setupRedirection(kotlinComponents: Set<KotlinTargetComponent>, newRootComponent: CustomRootComponent) {
6678
afterEvaluate {
6779
extensions.getByType(PublishingExtension::class.java).apply {
6880
val kotlinMultiplatform = publications
@@ -83,7 +95,7 @@ internal fun Project.publishAndroidxReference(target: AbstractKotlinTarget, newR
8395
if (it.publication.name == "kotlinMultiplatform") it.enabled = false
8496
}
8597

86-
target.kotlinComponents.forEach { component ->
98+
kotlinComponents.forEach { component ->
8799
val componentName = component.name
88100

89101
if (component is KotlinVariant)

0 commit comments

Comments
 (0)