spotless
spotless copied to clipboard
Gradle 8.x: can not configure SQL format in `withinBlocksRegex`
I'm using Gradle 8.6 and spotless 6.25.0 on macOS Sonoma 14.3.1
I was trying to format some SQL within another source file, but I just can not register the sql format. I tried the following:
spotless {
format("jsonnet") {
target("**/*.jsonnet", "**/*.libsonnet")
trimTrailingWhitespace()
indentWithSpaces()
withinBlocksRegex("sql", "(?s)|||\\v.*|||") {
sql { dbeaver() }
}
}
}
And it fails with:
Caused by: org.gradle.api.internal.AbstractMutationGuard$IllegalMutationException: DefaultTaskContainer#register(String, Class, 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:440)
at org.gradle.api.internal.tasks.DefaultTaskContainer.register(DefaultTaskContainer.java:381)
at com.diffplug.gradle.spotless.SpotlessExtensionImpl.createFormatTasks(SpotlessExtensionImpl.java:56)
at com.diffplug.gradle.spotless.SpotlessExtension.maybeCreate(SpotlessExtension.java:273)
at com.diffplug.gradle.spotless.SpotlessExtension.format(SpotlessExtension.java:257)
at com.diffplug.gradle.spotless.SpotlessExtension.sql(SpotlessExtension.java:168)
at Build_logic_jsonnet_sql_spotless_gradle$2$1$1.execute(build-logic.jsonnet-sql-spotless.gradle.kts:14)
at Build_logic_jsonnet_sql_spotless_gradle$2$1$1.execute(build-logic.jsonnet-sql-spotless.gradle.kts:13)
at com.diffplug.gradle.spotless.FormatExtension.withinBlocksHelper(FormatExtension.java:1018)
at com.diffplug.gradle.spotless.FormatExtension.withinBlocksRegex(FormatExtension.java:1010)
at com.diffplug.gradle.spotless.FormatExtension.withinBlocksRegex(FormatExtension.java:1000)
at Build_logic_jsonnet_sql_spotless_gradle$2$1.execute(build-logic.jsonnet-sql-spotless.gradle.kts:13)
at Build_logic_jsonnet_sql_spotless_gradle$2$1.execute(build-logic.jsonnet-sql-spotless.gradle.kts:9)
at com.diffplug.gradle.spotless.SpotlessExtensionImpl.lambda$createFormatTasks$6(SpotlessExtensionImpl.java:67)
at org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45)
at org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45)
at org.gradle.internal.code.DefaultUserCodeApplicationContext$CurrentApplication$1.execute(DefaultUserCodeApplicationContext.java:122)
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:124)
at org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:256)
at org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.tryCreate(DefaultNamedDomainObjectCollection.java:1005)
... 170 more
~~Instead of the sql { ... } I tried e.g. googleJavaFormat() and it works without this failure, so I assume that this is a bug~~
It also doesn't work with googleJavaFormat
After some more experiments I found that this issue is likely related to gradle 8.x The configuration apparently works with gradle 7.6.4