[Gradle, JS] Use JAR archive task type only for jar archiveType

This commit is contained in:
Ilya Goncharov
2023-01-10 20:15:55 +00:00
committed by Space Team
parent c6886fc779
commit c3bdcc6b0d
7 changed files with 41 additions and 7 deletions
@@ -9,6 +9,7 @@ import org.gradle.api.Project
import org.gradle.api.invocation.Gradle
import org.gradle.api.logging.Logger
import org.gradle.api.tasks.bundling.AbstractArchiveTask
import org.gradle.api.tasks.bundling.Zip
import org.gradle.jvm.tasks.Jar
import org.gradle.workers.WorkQueue
import org.jetbrains.kotlin.build.report.metrics.BuildMetricsReporter
@@ -397,7 +398,7 @@ internal open class GradleCompilerRunner(
if (sourceSetName != KotlinCompilation.MAIN_COMPILATION_NAME) return null
val jarTaskName = project.extensions.findByType<KotlinJsProjectExtension>()?.js()?.artifactsTaskName
val jarTask = jarTaskName?.let { project.tasks.findByName(jarTaskName) } as? Jar
val jarTask = jarTaskName?.let { project.tasks.findByName(jarTaskName) } as? Zip
return jarTask?.archiveFile?.get()?.asFile
}
@@ -282,6 +282,9 @@ abstract class KotlinOnlyTargetConfigurator<KotlinCompilationType : KotlinCompil
) : AbstractKotlinTargetConfigurator<KotlinTargetType>(createTestCompilation) {
open val archiveType: String = ArtifactTypeDefinition.JAR_TYPE
open val archiveTaskType: Class<out Zip>
get() = Jar::class.java
internal abstract fun buildCompilationProcessor(compilation: KotlinCompilationType): KotlinCompilationProcessor<*>
override fun configureCompilations(target: KotlinTargetType) {
@@ -297,8 +300,10 @@ abstract class KotlinOnlyTargetConfigurator<KotlinCompilationType : KotlinCompil
/** The implementations are expected to create a [Zip] task under the name [KotlinTarget.artifactsTaskName] of the [target]. */
protected open fun createArchiveTasks(target: KotlinTargetType): TaskProvider<out Zip> {
//TODO Change Jar on Zip
return target.project.registerTask<Jar>(target.artifactsTaskName) {
return target.project.registerTask(
target.artifactsTaskName,
archiveTaskType
) {
it.description = "Assembles an archive containing the main classes."
it.group = BasePlugin.BUILD_GROUP
it.from(target.compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME).output.allOutputs)
@@ -397,7 +402,7 @@ internal fun Project.usageByName(usageName: String): Usage =
internal fun Project.categoryByName(categoryName: String): Category =
objects.named(Category::class.java, categoryName)
internal inline fun <reified T: Named> Project.attributeValueByName(attributeValueName: String): T =
internal inline fun <reified T : Named> Project.attributeValueByName(attributeValueName: String): T =
objects.named(T::class.java, attributeValueName)
fun Configuration.usesPlatformOf(target: KotlinTarget): Configuration {
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.gradle.utils.getByType
internal interface BasePluginConfiguration {
val archivesName: Property<String>
val distsDirectory: DirectoryProperty
val libsDirectory: DirectoryProperty
interface BasePluginConfigurationVariantFactory : VariantImplementationFactories.VariantImplementationFactory {
fun getInstance(project: Project): BasePluginConfiguration
@@ -40,4 +41,7 @@ internal class DefaultBasePluginConfiguration(
override val distsDirectory: DirectoryProperty
get() = basePluginExtension.distsDirectory
override val libsDirectory: DirectoryProperty
get() = basePluginExtension.libsDirectory
}
@@ -41,3 +41,14 @@ val Project.distsDirectory
.variantImplementationFactory<BasePluginConfiguration.BasePluginConfigurationVariantFactory>()
.getInstance(this)
.distsDirectory
/**
* Returns the directory to generate JAR archives into.
*
* @return The directory. Never returns null.
*/
val Project.libsDirectory
get() = gradle
.variantImplementationFactory<BasePluginConfiguration.BasePluginConfigurationVariantFactory>()
.getInstance(this)
.libsDirectory
@@ -8,11 +8,12 @@ package org.jetbrains.kotlin.gradle.targets.js.ir
import org.gradle.api.attributes.Usage
import org.gradle.api.tasks.TaskProvider
import org.gradle.api.tasks.bundling.Zip
import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptions
import org.jetbrains.kotlin.gradle.dsl.JsModuleKind
import org.jetbrains.kotlin.gradle.dsl.JsSourceMapEmbedMode
import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptions
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.libsDirectory
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsReportAggregatingTestRun
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
@@ -27,6 +28,9 @@ open class KotlinJsIrTargetConfigurator() :
override val archiveType: String
get() = KLIB_TYPE
override val archiveTaskType: Class<out Zip>
get() = Zip::class.java
override fun createTestRun(
name: String,
target: KotlinJsIrTarget
@@ -61,7 +65,10 @@ open class KotlinJsIrTargetConfigurator() :
override fun createArchiveTasks(target: KotlinJsIrTarget): TaskProvider<out Zip> {
return super.createArchiveTasks(target).apply {
configure { it.archiveExtension.set(KLIB_TYPE) }
configure {
it.archiveExtension.set(KLIB_TYPE)
it.destinationDirectory.set(it.project.libsDirectory)
}
}
}
@@ -71,7 +78,7 @@ open class KotlinJsIrTargetConfigurator() :
target.compilations.all { compilation ->
compilation.compilerOptions.configure {
configureOptions()
if (target.platformType == KotlinPlatformType.wasm) {
freeCompilerArgs.add(WASM_BACKEND)
}
@@ -25,6 +25,9 @@ internal class BasePluginConfigurationG70(
override val distsDirectory: DirectoryProperty
get() = basePluginConvention.distsDirectory
override val libsDirectory: DirectoryProperty
get() = basePluginConvention.libsDirectory
internal class BasePluginConfigurationVariantFactoryG70 : BasePluginConfiguration.BasePluginConfigurationVariantFactory {
override fun getInstance(project: Project): BasePluginConfiguration {
return BasePluginConfigurationG70(
@@ -25,6 +25,9 @@ internal class BasePluginConfigurationG6(
override val distsDirectory: DirectoryProperty
get() = basePluginConvention.distsDirectory
override val libsDirectory: DirectoryProperty
get() = basePluginConvention.libsDirectory
internal class BasePluginConfigurationVariantFactoryG6 : BasePluginConfiguration.BasePluginConfigurationVariantFactory {
override fun getInstance(project: Project): BasePluginConfiguration {
return BasePluginConfigurationG6(