diff --git a/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api b/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api index 0d686f78b3d..84266b714f8 100644 --- a/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api +++ b/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api @@ -1,3 +1,12 @@ +public abstract interface class org/jetbrains/kotlin/gradle/plugin/ide/IdeAdditionalArtifactResolver { + public abstract fun resolve (Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;Ljava/util/Set;)V +} + +public final class org/jetbrains/kotlin/gradle/plugin/ide/IdeAdditionalArtifactResolver$Empty : org/jetbrains/kotlin/gradle/plugin/ide/IdeAdditionalArtifactResolver { + public static final field INSTANCE Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeAdditionalArtifactResolver$Empty; + public fun resolve (Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;Ljava/util/Set;)V +} + public abstract interface class org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyEffect { public abstract fun invoke (Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;Ljava/util/Set;)V } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeAdditionalArtifactResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeAdditionalArtifactResolver.kt index ca369d4e6b1..f128ed85329 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeAdditionalArtifactResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeAdditionalArtifactResolver.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.gradle.plugin.ide +import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinBinaryDependency import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinDependency import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinResolvedBinaryDependency @@ -14,10 +15,22 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.ide.IdeDependencyResolver.Companion.DOCUMENTATION_BINARY_TYPE import org.jetbrains.kotlin.gradle.plugin.ide.IdeDependencyResolver.Companion.SOURCES_BINARY_TYPE - +/** + * Resolver for attaching additional artifacts to already resolved dependencies. + * #### Example + * ``` + * val sourcesJarResolver = IdeAdditionalArtifactResolver { sourceSet, dependencies -> + * dependencies.forEach { dependency -> + * dependency.sourcesClasspath.add(findMySourcesJarFile(dependency)) + * } + * } + * ``` + */ +@ExternalKotlinTargetApi fun interface IdeAdditionalArtifactResolver { fun resolve(sourceSet: KotlinSourceSet, dependencies: Set) + @ExternalKotlinTargetApi object Empty : IdeAdditionalArtifactResolver { override fun resolve(sourceSet: KotlinSourceSet, dependencies: Set) = Unit } @@ -41,7 +54,7 @@ internal fun IdeAdditionalArtifactResolver(resolvers: Iterable +internal fun IdeAdditionalArtifactResolver(resolver: IdeDependencyResolver) = IdeAdditionalArtifactResolver { sourceSet, dependencies -> /* Group already resolved dependencies by their coordinates (ignoring sourceSetName, since -sources.jar are not published on a "per source set" level.) @@ -71,4 +84,4 @@ fun IdeAdditionalArtifactResolver(resolver: IdeDependencyResolver) = IdeAddition } -fun IdeDependencyResolver.asAdditionalArtifactResolver() = IdeAdditionalArtifactResolver(this) \ No newline at end of file +internal fun IdeDependencyResolver.asAdditionalArtifactResolver() = IdeAdditionalArtifactResolver(this) \ No newline at end of file