diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt index cdb21c014e5..fd40b37b985 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt @@ -6,8 +6,10 @@ package org.jetbrains.kotlin.gradle.dsl import groovy.lang.Closure +import org.gradle.api.Action import org.gradle.api.Task import org.gradle.api.tasks.Internal +import org.gradle.util.ConfigureUtil interface KotlinCompile : Task { @get:Internal @@ -17,8 +19,11 @@ interface KotlinCompile : Task { kotlinOptions.fn() } + fun kotlinOptions(fn: Action) { + fn.execute(kotlinOptions) + } + fun kotlinOptions(fn: Closure<*>) { - fn.delegate = kotlinOptions - fn.call() + ConfigureUtil.configure(fn, kotlinOptions) } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/CompilationSpecificPluginPath.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/CompilationSpecificPluginPath.kt index e322aec3597..26ecaa37c0f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/CompilationSpecificPluginPath.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/CompilationSpecificPluginPath.kt @@ -106,7 +106,7 @@ internal class CompilationSpecificPluginPath { // And each compilation task should have its own plugin classpath val compileDesktop = project.tasks.getByName("compileKotlinDesktop") as KotlinCompile val expectedConfig = project.configurations.getByName(pluginClassPathConfiguration("desktop", "main")) - assertEquals(expectedConfig, compileDesktop.pluginClasspath) + assertEquals(expectedConfig, compileDesktop.pluginClasspath.from.single()) } @Test @@ -216,7 +216,7 @@ internal class CompilationSpecificPluginPath { .let { when (it) { is AbstractKotlinNativeCompile<*, *> -> it.compilerPluginClasspath - is AbstractKotlinCompile<*> -> it.pluginClasspath + is AbstractKotlinCompile<*> -> it.pluginClasspath.from.single() else -> error("Unexpected task type with name $taskName. Is it kotlin compile task?") } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt index 8e6db72bf72..8f0157d7008 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt @@ -34,7 +34,7 @@ import java.io.File import java.util.concurrent.Callable @CacheableTask -abstract class KaptGenerateStubsTask : KotlinCompile() { +abstract class KaptGenerateStubsTask : KotlinCompile(KotlinJvmOptionsImpl()) { class Configurator(private val kotlinCompileTask: KotlinCompile, kotlinCompilation: KotlinCompilationData<*>) : AbstractKotlinCompile.Configurator(kotlinCompilation) { @@ -63,11 +63,9 @@ abstract class KaptGenerateStubsTask : KotlinCompile() { } } ) - task.kotlinOptionsProperty.value(KotlinJvmOptionsImpl()).disallowChanges() } } - @field:Transient override val sourceRootsContainer = FilteringSourceRootsContainer(objects, { isSourceRootAllowed(it) }) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 1409dd6f9ab..01c8ccb439d 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -261,7 +261,7 @@ internal class Kotlin2JsSourceSetProcessor( project.whenEvaluated { kotlinTask.configure { kotlinTaskInstance -> val kotlinOptions = kotlinTaskInstance.kotlinOptions - val outputFile = kotlinTaskInstance.outputFile.get() + val outputFile = kotlinTaskInstance.outputFileProperty.get() val outputDir: File = outputFile.parentFile kotlinOptions.outputFile = if (!kotlinOptions.isProduceUnzippedKlib()) { outputFile.absolutePath diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsDcePlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsDcePlugin.kt index a9ffecb97f3..37cca755d3c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsDcePlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsDcePlugin.kt @@ -78,7 +78,7 @@ class KotlinJsDcePlugin : Plugin { dceTask.configure { it.classpath = configuration it.destinationDir = it.dceOptions.outputDirectory?.let { File(it) } ?: outputDir - it.source((kotlinTask.get() as Kotlin2JsCompile).outputFile.get()) + it.source((kotlinTask.get() as Kotlin2JsCompile).outputFileProperty.get()) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt index 83383df43a4..8fcdae1821c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt @@ -103,7 +103,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : ) { task -> val entryFileProvider = binary.linkSyncTask.map { it.destinationDir - .resolve(binary.linkTask.get().outputFile.get().name) + .resolve(binary.linkTask.get().outputFileProperty.get().name) } webpackMajorVersion.choose( @@ -173,7 +173,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : ) { task -> val entryFileProvider = binary.linkSyncTask.map { it.destinationDir - .resolve(binary.linkTask.get().outputFile.get().name) + .resolve(binary.linkTask.get().outputFileProperty.get().name) } task.description = "build webpack ${mode.name.toLowerCase()} bundle" diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt index b78abad8836..870f68fb196 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt @@ -23,7 +23,7 @@ import javax.inject.Inject @CacheableTask abstract class KotlinJsIrLink @Inject constructor( objectFactory: ObjectFactory -): Kotlin2JsCompile(objectFactory) { +): Kotlin2JsCompile(KotlinJsOptionsImpl(), objectFactory) { class Configurator(compilation: KotlinCompilationData<*>): Kotlin2JsCompile.Configurator(compilation) { @@ -33,8 +33,7 @@ abstract class KotlinJsIrLink @Inject constructor( task.entryModule.fileProvider( (compilation as KotlinJsIrCompilation).output.classesDirs.elements.map { it.single().asFile } ).disallowChanges() - task.kotlinOptionsProperty.value(KotlinJsOptionsImpl()).disallowChanges() - task.destinationDirectory.fileProvider(task.outputFile.map { it.parentFile }).disallowChanges() + task.destinationDirectory.fileProvider(task.outputFileProperty.map { it.parentFile }).disallowChanges() } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt index 218c34bbf2d..fa05b726f94 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt @@ -123,7 +123,7 @@ abstract class KotlinJsIrSubTarget( project.layout.file( binary.linkSyncTask.map { it.destinationDir - .resolve(binary.linkTask.get().outputFile.get().name) + .resolve(binary.linkTask.get().outputFileProperty.get().name) } ) ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinNodeJsIr.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinNodeJsIr.kt index 15e4429299c..67354e21e6d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinNodeJsIr.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinNodeJsIr.kt @@ -69,7 +69,7 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) : project.layout.file( binary.linkSyncTask.map { it.destinationDir - .resolve(binary.linkTask.get().outputFile.get().name) + .resolve(binary.linkTask.get().outputFileProperty.get().name) } ) ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt index 26d756a01d0..650604dd4c5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt @@ -257,7 +257,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : entryProperty.set( project.layout.file(actualDceTaskProvider.map { - it.destinationDir.resolve(compilation.compileKotlinTask.outputFile.get().name) + it.destinationDir.resolve(compilation.compileKotlinTask.outputFileProperty.get().name) }) ) @@ -300,7 +300,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : ?: compilation.npmProject.dir.resolve(if (dev) DCE_DEV_DIR else DCE_DIR) it.defaultCompilerClasspath.setFrom(project.configurations.named(COMPILER_CLASSPATH_CONFIGURATION_NAME)) - it.source(kotlinTask.map { it.outputFile.get() }) + it.source(kotlinTask.map { it.outputFileProperty.get() }) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt index 8341871cde7..5fecac274ef 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt @@ -103,7 +103,7 @@ abstract class KotlinJsSubTarget( testJs.group = LifecycleBasePlugin.VERIFICATION_GROUP testJs.description = testTaskDescription - val compileOutputFile = compileTask.flatMap { it.outputFile } + val compileOutputFile = compileTask.flatMap { it.outputFileProperty } testJs.inputFileProperty.fileProvider(compileOutputFile) testJs.dependsOn(nodeJs.npmInstallTaskProvider, compileTask, nodeJs.nodeJsSetupTaskProvider) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinNodeJs.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinNodeJs.kt index 8c0f06b79f4..ca53a2c740a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinNodeJs.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinNodeJs.kt @@ -49,7 +49,7 @@ open class KotlinNodeJs @Inject constructor(target: KotlinJsTarget) : ) { val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) { group = taskGroupName - inputFileProperty.fileProvider(compilation.compileKotlinTaskProvider.flatMap { it.outputFile }) + inputFileProperty.fileProvider(compilation.compileKotlinTaskProvider.flatMap { it.outputFileProperty }) } target.runTask.dependsOn(runTaskHolder) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt index d51a400348c..d1c181ba9f3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt @@ -79,7 +79,7 @@ constructor( @get:PathSensitive(PathSensitivity.ABSOLUTE) @get:InputFile - val entryProperty: RegularFileProperty = objects.fileProperty().fileProvider(compilation.compileKotlinTask.outputFile) + val entryProperty: RegularFileProperty = objects.fileProperty().fileProvider(compilation.compileKotlinTask.outputFileProperty) init { onlyIf { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt index 5af0d489551..392d180b8c1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.gradle.tasks import org.gradle.api.Project import org.gradle.api.file.ConfigurableFileCollection -import org.gradle.api.provider.Property import org.gradle.api.provider.Provider import org.gradle.api.tasks.* import org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArguments @@ -38,14 +37,16 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.refinesClosure import org.jetbrains.kotlin.gradle.plugin.sources.resolveAllDependsOnSourceSets import org.jetbrains.kotlin.incremental.ChangedFiles import java.io.File +import javax.inject.Inject @CacheableTask -abstract class KotlinCompileCommon : AbstractKotlinCompile(), KotlinCommonCompile { +abstract class KotlinCompileCommon @Inject constructor( + override val kotlinOptions: KotlinMultiplatformCommonOptions +) : AbstractKotlinCompile(), KotlinCommonCompile { class Configurator(compilation: KotlinCompilationData<*>) : AbstractKotlinCompile.Configurator(compilation) { override fun configure(task: KotlinCompileCommon) { super.configure(task) - task.kotlinOptionsProperty.value(compilation.kotlinOptions as KotlinMultiplatformCommonOptionsImpl).disallowChanges() task.refinesMetadataPaths.from(getRefinesMetadataPaths(task.project)).disallowChanges() task.expectActualLinker .value(task.project.provider { (compilation as? KotlinCommonCompilation)?.isKlibCompilation == true || compilation is KotlinMetadataCompilationData }) @@ -76,8 +77,6 @@ abstract class KotlinCompileCommon : AbstractKotlinCompile = objects.property(KotlinMultiplatformCommonOptions::class.java) - override fun createCompilerArgs(): K2MetadataCompilerArguments = K2MetadataCompilerArguments() diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 9f6fd3444c2..cb656844bc8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -385,21 +385,16 @@ internal inline val T.thisTaskProvider: TaskProvider get() = checkNotNull(project.locateTask(name)) @CacheableTask -abstract class KotlinCompile : AbstractKotlinCompile(), KotlinJvmCompile { +abstract class KotlinCompile @Inject constructor( + override val kotlinOptions: KotlinJvmOptions +) : AbstractKotlinCompile(), KotlinJvmCompile { class Configurator(kotlinCompilation: KotlinCompilationData<*>) : AbstractKotlinCompile.Configurator(kotlinCompilation) { - override fun configure(task: KotlinCompile) { - super.configure(task) - - task.kotlinOptionsProperty.set(compilation.kotlinOptions as KotlinJvmOptions) - } } @get:Internal internal val parentKotlinOptionsImpl: Property = objects.property(KotlinJvmOptions::class.java) - override val kotlinOptionsProperty: Property = objects.property(KotlinJvmOptions::class.java) - @get:Internal @field:Transient internal open val sourceRootsContainer = FilteringSourceRootsContainer(objects) @@ -528,8 +523,9 @@ abstract class KotlinCompile : AbstractKotlinCompile(), @CacheableTask internal abstract class KotlinCompileWithWorkers @Inject constructor( + kotlinOptions: KotlinJvmOptions, private val workerExecutor: WorkerExecutor -) : KotlinCompile() { +) : KotlinCompile(kotlinOptions) { override fun compilerRunner( javaExecutable: File, @@ -544,9 +540,10 @@ internal abstract class KotlinCompileWithWorkers @Inject constructor( @CacheableTask internal abstract class Kotlin2JsCompileWithWorkers @Inject constructor( + kotlinOptions: KotlinJsOptions, objectFactory: ObjectFactory, private val workerExecutor: WorkerExecutor -) : Kotlin2JsCompile(objectFactory) { +) : Kotlin2JsCompile(kotlinOptions, objectFactory) { override fun compilerRunner( javaExecutable: File, @@ -561,8 +558,9 @@ internal abstract class Kotlin2JsCompileWithWorkers @Inject constructor( @CacheableTask internal abstract class KotlinCompileCommonWithWorkers @Inject constructor( + kotlinOptions: KotlinMultiplatformCommonOptions, private val workerExecutor: WorkerExecutor -) : KotlinCompileCommon() { +) : KotlinCompileCommon(kotlinOptions) { override fun compilerRunner( javaExecutable: File, jdkToolsJar: File? @@ -576,6 +574,7 @@ internal abstract class KotlinCompileCommonWithWorkers @Inject constructor( @CacheableTask abstract class Kotlin2JsCompile @Inject constructor( + override val kotlinOptions: KotlinJsOptions, objectFactory: ObjectFactory ) : AbstractKotlinCompile(), KotlinJsCompile { @@ -588,24 +587,22 @@ abstract class Kotlin2JsCompile @Inject constructor( override fun configure(task: T) { super.configure(task) - task.kotlinOptionsProperty.set(compilation.kotlinOptions as KotlinJsOptions) - task.outputFile.value( - task.kotlinOptionsProperty.map { - it.outputFile?.let(::File) + task.outputFileProperty.value( + task.project.provider { + task.kotlinOptions.outputFile?.let(::File) ?: task.destinationDirectory.locationOnly.get().asFile.resolve("${compilation.ownModuleName}.js") } ).disallowChanges() task.optionalOutputFile.fileProvider( - task.kotlinOptionsProperty.flatMap { jsOptions -> - task.outputFile.takeIf { !jsOptions.isProduceUnzippedKlib() } - ?: task.project.objects.fileProperty().asFile + task.outputFileProperty.flatMap { outputFile -> + task.project.provider { + outputFile.takeUnless { task.kotlinOptions.isProduceUnzippedKlib() } + } } ).disallowChanges() } } - override val kotlinOptionsProperty: Property = objectFactory.property(KotlinJsOptions::class.java) - @get:Input internal var incrementalJsKlib: Boolean = true @@ -619,7 +616,12 @@ abstract class Kotlin2JsCompile @Inject constructor( // This can be file or directory @get:Internal - abstract val outputFile: Property + abstract val outputFileProperty: Property + + @Deprecated("Please use outputFileProperty, this is kept for backwards compatibility.", replaceWith = ReplaceWith("outputFileProperty")) + @get:Internal + val outputFile: File + get() = outputFileProperty.get() @get:OutputFile @get:Optional @@ -636,13 +638,13 @@ abstract class Kotlin2JsCompile @Inject constructor( super.setupCompilerArgs(args, defaultsOnly = defaultsOnly, ignoreClasspathResolutionErrors = ignoreClasspathResolutionErrors) try { - outputFile.get().canonicalPath + outputFileProperty.get().canonicalPath } catch (ex: Throwable) { - logger.warn("IO EXCEPTION: outputFile: ${outputFile.get().path}") + logger.warn("IO EXCEPTION: outputFile: ${outputFileProperty.get().path}") throw ex } - args.outputFile = outputFile.get().absoluteFile.normalize().absolutePath + args.outputFile = outputFileProperty.get().absoluteFile.normalize().absolutePath if (defaultsOnly) return diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt index 49baa294ddf..566ce8302c0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt @@ -89,7 +89,7 @@ internal open class KotlinTasksProvider { ): TaskProvider { val properties = PropertiesProvider(project) val taskClass = taskOrWorkersTask(properties) - val result = project.registerTask(name, taskClass) { + val result = project.registerTask(name, taskClass, constructorArgs = listOf(compilation.kotlinOptions)) { configureAction(it) KotlinCompile.Configurator(compilation).configure(it) } @@ -105,7 +105,7 @@ internal open class KotlinTasksProvider { ): TaskProvider { val properties = PropertiesProvider(project) val taskClass = taskOrWorkersTask(properties) - val result = project.registerTask(name, taskClass) { + val result = project.registerTask(name, taskClass, constructorArgs = listOf(compilation.kotlinOptions)) { configureAction(it) Kotlin2JsCompile.Configurator(compilation).configure(it) } @@ -137,7 +137,7 @@ internal open class KotlinTasksProvider { ): TaskProvider { val properties = PropertiesProvider(project) val taskClass = taskOrWorkersTask(properties) - val result = project.registerTask(name, taskClass) { + val result = project.registerTask(name, taskClass, constructorArgs = listOf(compilation.kotlinOptions)) { configureAction(it) KotlinCompileCommon.Configurator(compilation).configure(it) }