Refactor: add Project.getMetadataCompilationForSourceSet extension.

This commit is contained in:
Konstantin Tskhovrebov
2020-04-27 14:01:02 +03:00
parent 5bbb459993
commit beb59b3075
3 changed files with 12 additions and 7 deletions
@@ -18,6 +18,7 @@ import org.gradle.api.tasks.bundling.Zip
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.plugin.sources.*
@@ -403,7 +404,6 @@ class KotlinMetadataTargetConfigurator(kotlinPluginVersion: String) :
// and their dependencies metadata transformed for compilation:
return project.files(
project.provider {
val metadataTarget = compilation.target
val sourceSet = compilation.defaultSourceSet
val transformationTaskHolders = sourceSet.getSourceSetHierarchy().mapNotNull { hierarchySourceSet ->
@@ -424,8 +424,8 @@ class KotlinMetadataTargetConfigurator(kotlinPluginVersion: String) :
transformationTaskHolders.flatMap { it.get().filesByResolution.toList() }.toMap()
val dependsOnCompilationOutputs = sourceSet.getSourceSetHierarchy().mapNotNull { hierarchySourceSet ->
val dependencyCompilation = metadataTarget.compilations.getByName(hierarchySourceSet.name)
dependencyCompilation.output.classesDirs.takeIf { hierarchySourceSet != sourceSet }
val dependencyCompilation = project.getMetadataCompilationForSourceSet(hierarchySourceSet)
dependencyCompilation?.output?.classesDirs.takeIf { hierarchySourceSet != sourceSet }
}
val artifactView = fromFiles.incoming.artifactView { view ->
@@ -540,4 +540,8 @@ internal fun Project.filesWithUnpackedArchives(from: FileCollection, extensions:
if (it.exists()) project.zipTree(it) else null
} else it
}
}).builtBy(from)
}).builtBy(from)
internal fun Project.getMetadataCompilationForSourceSet(sourceSet: KotlinSourceSet): AbstractKotlinCompilation<*>? {
return multiplatformExtension.metadata().compilations.findByName(sourceSet.name)
}
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.sources.getSourceSetHierarchy
import org.jetbrains.kotlin.gradle.plugin.sources.getVisibleSourceSetsFromAssociateCompilations
import org.jetbrains.kotlin.gradle.targets.metadata.getMetadataCompilationForSourceSet
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
@@ -117,6 +118,6 @@ class KotlinSharedNativeCompilation(override val target: KotlinMetadataTarget, v
addAll(defaultSourceSet.getSourceSetHierarchy())
remove(defaultSourceSet)
}
project.files(friendSourceSets.mapNotNull { target.compilations.findByName(it.name)?.output?.classesDirs })
project.files(friendSourceSets.mapNotNull { project.getMetadataCompilationForSourceSet(it)?.output?.classesDirs })
})
}
@@ -17,8 +17,8 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinNativeBinaryContainer
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.targets.metadata.*
import org.jetbrains.kotlin.gradle.targets.metadata.filesWithUnpackedArchives
import org.jetbrains.kotlin.gradle.targets.metadata.getPublishedCommonSourceSets
import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled
import org.jetbrains.kotlin.gradle.targets.native.KotlinNativeBinaryTestRun
import org.jetbrains.kotlin.gradle.targets.native.KotlinNativeHostTestRun
@@ -71,7 +71,7 @@ open class KotlinNativeTarget @Inject constructor(
metadataJar.onlyIf { this@KotlinNativeTarget.publishable }
val metadataCompilations = hostSpecificSourceSets.mapNotNull {
project.multiplatformExtension.metadata().compilations.findByName(it.name)
project.getMetadataCompilationForSourceSet(it)
}
metadataCompilations.forEach {