hello gradle kotlin friends, i am having trouble u...
# gradle
s
hello gradle kotlin friends, i am having trouble upgrading a library we publish to
1.8.20
. i get the following error
Copy code
Could not create task ':samples:fullstack:basic:frontend:jsJar'.
> DefaultTaskCollection#configureEach(Action) on task set cannot be executed in the current context.
it looks like this is a known issue solved in `1.9.x`: https://youtrack.jetbrains.com/issue/KT-56357
but the workaround is very mysterious to me:
Copy code
publish {
    pom.packaging = "klib"
    org.jetbrains.kotlin.gradle.plugin.VariantImplementationFactories.getProvider(project)

    artifact(tasks.named("wasmJar")) {
        extension = "klib"
    }
specifically he added
Copy code
org.jetbrains.kotlin.gradle.plugin.VariantImplementationFactories.getProvider(project)
but i don't know where to add that in my Gradle KTS, or why it works
stacktrace looks internal to kotlin plugin
Copy code
Caused by: org.gradle.api.internal.AbstractMutationGuard$IllegalMutationException: DefaultTaskCollection#configureEach(Action) on task set cannot be executed in the current context.
        at org.gradle.api.internal.AbstractMutationGuard.createIllegalStateException(AbstractMutationGuard.java:39)
        at org.gradle.api.internal.AbstractMutationGuard.assertMutationAllowed(AbstractMutationGuard.java:27)
        at org.gradle.api.internal.DefaultDomainObjectCollection.assertMutable(DefaultDomainObjectCollection.java:458)
        at org.gradle.api.internal.DefaultDomainObjectCollection.configureEach(DefaultDomainObjectCollection.java:168)
        at org.gradle.api.internal.tasks.DefaultRealizableTaskCollection.configureEach(DefaultRealizableTaskCollection.java:234)
        at org.jetbrains.kotlin.gradle.plugin.VariantImplementationFactories$Companion$getProvider$2$1.invoke(VariantImplementationFactories.kt:67)
        at org.jetbrains.kotlin.gradle.plugin.VariantImplementationFactories$Companion$getProvider$2$1.invoke(VariantImplementationFactories.kt:66)
        at org.jetbrains.kotlin.gradle.utils.SingleAction.run(singleAction.kt:31)
        at org.jetbrains.kotlin.gradle.plugin.VariantImplementationFactories$Companion.getProvider(VariantImplementationFactories.kt:66)
        at org.jetbrains.kotlin.gradle.plugin.VariantImplementationFactories$Companion.get(VariantImplementationFactories.kt:76)
        at org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.UtilsKt.getLibsDirectory(Utils.kt:56)
        at org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetConfigurator$createArchiveTasks$1$1.invoke(KotlinJsIrTargetConfigurator.kt:71)
        at org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetConfigurator$createArchiveTasks$1$1.invoke(KotlinJsIrTargetConfigurator.kt:69)
        at org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetConfigurator$sam$org_gradle_api_Action$0.execute(KotlinJsIrTargetConfigurator.kt)
        at org.gradle.api.internal.DefaultMutationGuard$2.execute(DefaultMutationGuard.java:44)
        at org.gradle.api.internal.DefaultMutationGuard$2.execute(DefaultMutationGuard.java:44)
        at org.gradle.configuration.internal.DefaultUserCodeApplicationContext$CurrentApplication$1.execute(DefaultUserCodeApplicationContext.java:123)
        at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction$1.run(DefaultCollectionCallbackActionDecorator.java:110)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
        at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction.execute(DefaultCollectionCallbackActionDecorator.java:107)
        at org.gradle.internal.ImmutableActionSet$SetWithManyActions.execute(ImmutableActionSet.java:329)
        at org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:262)
        at org.gradle.api.internal.DefaultNamedDomainObjectCollection.doAdd(DefaultNamedDomainObjectCollection.java:113)
        at org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:256)
        at org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.tryCreate(DefaultNamedDomainObjectCollection.java:944)
        ... 216 more
v
Without knowing it or having looked into it, the problem seems to be that the Kotlin plugin does something deferred that then happens to late at an unsupported time and with that call the action is done eagerly.