[Gradle][KPM] Implement KotlinCompilationOutputsJarArtifactConfigurator

This commit is contained in:
sebastian.sellmair
2021-11-29 10:01:21 +01:00
committed by Space
parent e8da9c007c
commit 032981dd83
3 changed files with 18 additions and 20 deletions
@@ -5,12 +5,7 @@
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
import org.gradle.api.artifacts.Configuration
import org.gradle.api.tasks.TaskProvider
import org.gradle.jvm.tasks.Jar
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.disambiguateName
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
interface KotlinCompileTaskConfigurator<in T : KotlinGradleVariant> {
fun registerCompileTasks(variant: T): TaskProvider<*>
@@ -32,18 +27,4 @@ object KotlinNativeCompileTaskConfigurator : KotlinCompileTaskConfigurator<Kotli
}
}
// TODO NOW: Find place
object KotlinFragmentJarArtifactElementsConfigurator : KotlinFragmentConfigurationsConfigurator<KotlinGradleVariant> {
override fun configure(fragment: KotlinGradleVariant, configuration: Configuration) {
val project = fragment.project
val module = fragment.containingModule
val jarTaskName = fragment.disambiguateName("jar")
val jarTask = project.locateOrRegisterTask<Jar>(jarTaskName) {
it.from(fragment.compilationOutputs.allOutputs)
it.archiveClassifier.set(dashSeparatedName(fragment.name, module.moduleClassifier))
}
project.artifacts.add(configuration.name, jarTask)
}
}
@@ -75,7 +75,7 @@ class KotlinJvmVariantConfigurator(
DefaultKotlinRuntimeDependenciesConfigurator,
private val apiElementsConfigurator: KotlinFragmentConfigurationsConfigurator<KotlinJvmVariant> =
DefaultKotlinApiElementsConfigurator,
DefaultKotlinApiElementsConfigurator + KotlinCompilationOutputsJarArtifactConfigurator,
private val runtimeElementsConfigurator: KotlinFragmentConfigurationsConfigurator<KotlinJvmVariant> =
DefaultKotlinRuntimeElementsConfigurator,
@@ -9,9 +9,13 @@ import org.gradle.api.NamedDomainObjectProvider
import org.gradle.api.artifacts.Configuration
import org.gradle.api.attributes.Bundling
import org.gradle.api.attributes.Category
import org.gradle.jvm.tasks.Jar
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.disambiguateName
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.locateOrRegister
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
interface KotlinApiElementsConfigurationInstantiator : KotlinFragmentConfigurationInstantiator
@@ -38,3 +42,16 @@ val DefaultKotlinApiElementsConfigurator = KotlinConfigurationsConfigurator(
KotlinFragmentModuleCapabilityConfigurator,
KotlinFragmentProducerApiUsageAttributesConfigurator
)
object KotlinCompilationOutputsJarArtifactConfigurator : KotlinFragmentConfigurationsConfigurator<KotlinGradleVariant> {
override fun configure(fragment: KotlinGradleVariant, configuration: Configuration) {
val project = fragment.project
val module = fragment.containingModule
val jarTaskName = fragment.disambiguateName("jar")
val jarTask = project.locateOrRegisterTask<Jar>(jarTaskName) {
it.from(fragment.compilationOutputs.allOutputs)
it.archiveClassifier.set(dashSeparatedName(fragment.name, module.moduleClassifier))
}
project.artifacts.add(configuration.name, jarTask)
}
}