[Gradle] Change skipProjectDependencies to transformProjectDependencies

For better code readability

^KT-58471 Verification Pending
This commit is contained in:
Anton Lakotka
2023-05-24 09:53:13 +02:00
committed by Space Team
parent 792c08ec7d
commit 60939a8fe6
2 changed files with 18 additions and 23 deletions
@@ -3,7 +3,6 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.ProjectDependency import org.gradle.api.artifacts.ProjectDependency
import org.gradle.api.artifacts.component.ProjectComponentIdentifier
import org.gradle.api.file.FileCollection import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.* import org.gradle.api.tasks.*
import org.gradle.work.NormalizeLineEndings import org.gradle.work.NormalizeLineEndings
@@ -17,7 +16,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.applyIf
internal class MetadataDependencyTransformationTaskInputs( internal class MetadataDependencyTransformationTaskInputs(
project: Project, project: Project,
kotlinSourceSet: KotlinSourceSet, kotlinSourceSet: KotlinSourceSet,
private val skipProjectDependencies: Boolean = false, private val keepProjectDependencies: Boolean = true,
) { ) {
@Suppress("unused") // Gradle input @Suppress("unused") // Gradle input
@get:InputFiles @get:InputFiles
@@ -27,7 +26,7 @@ internal class MetadataDependencyTransformationTaskInputs(
val configurationToResolve: FileCollection = kotlinSourceSet val configurationToResolve: FileCollection = kotlinSourceSet
.internal .internal
.resolvableMetadataConfiguration .resolvableMetadataConfiguration
.applyIf(skipProjectDependencies) { withoutProjectDependencies() } .applyIf(!keepProjectDependencies) { withoutProjectDependencies() }
@Suppress("unused") // Gradle input @Suppress("unused") // Gradle input
@get:InputFiles @get:InputFiles
@@ -37,11 +36,12 @@ internal class MetadataDependencyTransformationTaskInputs(
val hostSpecificMetadataConfigurationsToResolve: FileCollection = project.filesProvider { val hostSpecificMetadataConfigurationsToResolve: FileCollection = project.filesProvider {
kotlinSourceSet.internal.compilations kotlinSourceSet.internal.compilations
.filter { compilation -> if (compilation is KotlinNativeCompilation) compilation.konanTarget.enabledOnCurrentHost else true } .filter { compilation -> if (compilation is KotlinNativeCompilation) compilation.konanTarget.enabledOnCurrentHost else true }
.mapNotNull { compilation -> compilation .mapNotNull { compilation ->
.internal compilation
.configurations .internal
.hostSpecificMetadataConfiguration .configurations
?.applyIf(skipProjectDependencies) { withoutProjectDependencies() } .hostSpecificMetadataConfiguration
?.applyIf(!keepProjectDependencies) { withoutProjectDependencies() }
} }
} }
@@ -74,7 +74,7 @@ internal class MetadataDependencyTransformationTaskInputs(
participatingSourceSets.flatMap { it.internal.compilations }.associate { participatingSourceSets.flatMap { it.internal.compilations }.associate {
it.name to project.configurations.getByName(it.compileDependencyConfigurationName) it.name to project.configurations.getByName(it.compileDependencyConfigurationName)
.allDependencies .allDependencies
.applyIf(skipProjectDependencies) { filterNot { it is ProjectDependency } } .applyIf(!keepProjectDependencies) { filterNot { it is ProjectDependency } }
.map { listOf(it.group, it.name, it.version) }.toSet() .map { listOf(it.group, it.name, it.version) }.toSet()
} }
} }
@@ -7,8 +7,6 @@ package org.jetbrains.kotlin.gradle.targets.native.internal
import org.gradle.api.DefaultTask import org.gradle.api.DefaultTask
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.component.ProjectComponentIdentifier
import org.gradle.api.file.FileCollection import org.gradle.api.file.FileCollection
import org.gradle.api.file.RegularFileProperty import org.gradle.api.file.RegularFileProperty
import org.gradle.api.model.ObjectFactory import org.gradle.api.model.ObjectFactory
@@ -22,17 +20,14 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.ArtifactMetadataProvider import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.ArtifactMetadataProvider
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.ProjectMetadataProvider import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.ProjectMetadataProvider
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toKpmModuleIdentifiers
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.sources.internal import org.jetbrains.kotlin.gradle.plugin.sources.internal
import org.jetbrains.kotlin.gradle.plugin.sources.metadataTransformation
import org.jetbrains.kotlin.gradle.tasks.dependsOn import org.jetbrains.kotlin.gradle.tasks.dependsOn
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
import org.jetbrains.kotlin.gradle.tasks.withType import org.jetbrains.kotlin.gradle.tasks.withType
import org.jetbrains.kotlin.gradle.utils.filesProvider import org.jetbrains.kotlin.gradle.utils.filesProvider
import org.jetbrains.kotlin.gradle.utils.isProjectComponentIdentifierInCurrentBuild import org.jetbrains.kotlin.gradle.utils.isProjectComponentIdentifierInCurrentBuild
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import org.jetbrains.kotlin.project.model.KpmModuleIdentifier
import org.jetbrains.kotlin.utils.addToStdlib.applyIf import org.jetbrains.kotlin.utils.addToStdlib.applyIf
import java.io.File import java.io.File
import java.io.Serializable import java.io.Serializable
@@ -58,8 +53,8 @@ internal fun Project.locateOrRegisterCInteropMetadataDependencyTransformationTas
project.layout.kotlinTransformedCInteropMetadataLibraryDirectoryForBuild(sourceSet.name), project.layout.kotlinTransformedCInteropMetadataLibraryDirectoryForBuild(sourceSet.name),
/* cleaning = */ /* cleaning = */
CInteropMetadataDependencyTransformationTask.Cleaning.DeleteOutputDirectory, CInteropMetadataDependencyTransformationTask.Cleaning.DeleteOutputDirectory,
/* skipProjectDependencies = */ /* transformProjectDependencies = */
false, // we want project dependencies to be included in the output true,
), ),
configureTask = { configureTaskOrder(); onlyIfSourceSetIsSharedNative() } configureTask = { configureTaskOrder(); onlyIfSourceSetIsSharedNative() }
) )
@@ -86,8 +81,8 @@ internal fun Project.locateOrRegisterCInteropMetadataDependencyTransformationTas
project.kotlinTransformedCInteropMetadataLibraryDirectoryForIde, project.kotlinTransformedCInteropMetadataLibraryDirectoryForIde,
/* cleaning = */ /* cleaning = */
CInteropMetadataDependencyTransformationTask.Cleaning.None, CInteropMetadataDependencyTransformationTask.Cleaning.None,
/* skipProjectDependencies = */ /* transformProjectDependencies = */
true, false, // For IDE Project Dependencies will be transformed during configuration, see [createCInteropMetadataDependencyClasspath]
), ),
configureTask = { configureTaskOrder(); onlyIfSourceSetIsSharedNative() } configureTask = { configureTaskOrder(); onlyIfSourceSetIsSharedNative() }
) )
@@ -119,9 +114,9 @@ internal open class CInteropMetadataDependencyTransformationTask @Inject constru
@Transient @get:Internal val sourceSet: DefaultKotlinSourceSet, @Transient @get:Internal val sourceSet: DefaultKotlinSourceSet,
@get:OutputDirectory val outputDirectory: File, @get:OutputDirectory val outputDirectory: File,
@get:Internal val cleaning: Cleaning, @get:Internal val cleaning: Cleaning,
/** when set, project-to-project dependencies will not be included to [outputLibraryFiles], /** when false, project-to-project dependencies will not be transformed and listed in [outputLibraryFiles],
* assuming they are added during gradle configuration, see [createCInteropMetadataDependencyClasspath] for details */ * assuming they are added during gradle configuration, see [createCInteropMetadataDependencyClasspath] for details */
private val skipProjectDependencies: Boolean, private val transformProjectDependencies: Boolean,
objectFactory: ObjectFactory, objectFactory: ObjectFactory,
) : DefaultTask() { ) : DefaultTask() {
@@ -142,7 +137,7 @@ internal open class CInteropMetadataDependencyTransformationTask @Inject constru
} }
@get:Nested @get:Nested
internal val inputs = MetadataDependencyTransformationTaskInputs(project, sourceSet, skipProjectDependencies) internal val inputs = MetadataDependencyTransformationTaskInputs(project, sourceSet, transformProjectDependencies)
@get:OutputFile @get:OutputFile
protected val outputLibrariesFileIndex: RegularFileProperty = objectFactory protected val outputLibrariesFileIndex: RegularFileProperty = objectFactory
@@ -177,7 +172,7 @@ internal open class CInteropMetadataDependencyTransformationTask @Inject constru
val metadataProvider = chooseVisibleSourceSets.metadataProvider val metadataProvider = chooseVisibleSourceSets.metadataProvider
return when (metadataProvider) { return when (metadataProvider) {
is ProjectMetadataProvider -> { is ProjectMetadataProvider -> {
if (skipProjectDependencies) return emptyList() if (!transformProjectDependencies) return emptyList()
val visibleSourceSetName = chooseVisibleSourceSets.visibleSourceSetProvidingCInterops ?: return emptyList() val visibleSourceSetName = chooseVisibleSourceSets.visibleSourceSetProvidingCInterops ?: return emptyList()
metadataProvider metadataProvider
.getSourceSetCInteropMetadata(visibleSourceSetName, ProjectMetadataProvider.MetadataConsumer.Cli) .getSourceSetCInteropMetadata(visibleSourceSetName, ProjectMetadataProvider.MetadataConsumer.Cli)
@@ -198,7 +193,7 @@ internal open class CInteropMetadataDependencyTransformationTask @Inject constru
private fun Iterable<MetadataDependencyResolution>.resolutionsToTransform(): List<ChooseVisibleSourceSets> { private fun Iterable<MetadataDependencyResolution>.resolutionsToTransform(): List<ChooseVisibleSourceSets> {
return filterIsInstance<ChooseVisibleSourceSets>() return filterIsInstance<ChooseVisibleSourceSets>()
.applyIf(skipProjectDependencies) { .applyIf(!transformProjectDependencies) {
filterNot { it.dependency.id.isProjectComponentIdentifierInCurrentBuild } filterNot { it.dependency.id.isProjectComponentIdentifierInCurrentBuild }
} }
} }