Bernát Gábor
09/23/2024, 6:04 PMspotbugs {
excludeFilter = file("spotbugs/spotbugs-exclude.xml")
}
With the buildSrc layout, so when applying the reusable component it does not try to read the file from the project applied but rather from buildSrc resourcesBernát Gábor
09/23/2024, 6:18 PMAdam
09/23/2024, 8:19 PMexcludeFilter a RegularFileProperty?
It'd probably be better to create a Gradle output task that would extract the file and produce to a stable output.
Creating a temporary file every time will be bad for Gradle caching and up-to-date checks, since the file location will change every time.Adam
09/23/2024, 8:39 PMval prepareSpotbugsExcludeFilter by tasks.registering {
val file = temporaryDir.resolve("spotbugs-exclude.xml")
outputs.file(file)
val content = {}::class.java.getResource("/spotbugs/exclude.xml")?.readText()
doLast {
file.parentFile.mkdirs()
file.writeText(content ?: error("missing /spotbugs/exclude.xml"))
}
}
spotbugs {
excludeFilter = prepareSpotbugsExcludeFilter.map { it.outputs.files.singleFile }
}Bernát Gábor
09/23/2024, 9:26 PMAdam
09/23/2024, 9:29 PMBernát Gábor
09/23/2024, 10:30 PMCaused by: org.gradle.api.reflect.ObjectInstantiationException: Could not create an instance of type com.diffplug.gradle.spotless.SpotlessExtensionImpl.
at at org.gradle.internal.instantiation.generator.DependencyInjectingInstantiator.doCreate(DependencyInjectingInstantiator.java:70)
at org.gradle.internal.instantiation.generator.DependencyInjectingInstantiator.newInstanceWithDisplayName(DependencyInjectingInstantiator.java:51)
at org.gradle.internal.extensibility.DefaultConvention.instantiate(DefaultConvention.java:229)
at org.gradle.internal.extensibility.DefaultConvention.create(DefaultConvention.java:150)
at org.gradle.internal.extensibility.DefaultConvention.create(DefaultConvention.java:145)
at com.diffplug.gradle.spotless.SpotlessPlugin.apply(SpotlessPlugin.java:53)
due to:
Caused by: org.gradle.api.internal.AbstractMutationGuard$IllegalMutationException: Project#afterEvaluate(Action) on project ':x:x-core' 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:34)
at org.gradle.api.internal.project.DefaultProject.assertMutatingMethodAllowed(DefaultProject.java:1477)
at org.gradle.api.internal.project.DefaultProject.afterEvaluate(DefaultProject.java:1054)
at com.diffplug.gradle.spotless.SpotlessExtensionImpl.<init>(SpotlessExtensionImpl.java:42)
ideas? 😄Adam
09/23/2024, 10:39 PMAdam
09/23/2024, 10:40 PMafterEvalute {} should be avoided wherever possible, and I don't think it's needed here
https://github.com/diffplug/spotless/blob/1108c14f83d8e96bc86f923acebfedb5e4a43917/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessExtensionImpl.java#L42Adam
09/23/2024, 10:41 PMenforceCheck = false and setting up the task dependency in a more idiomatic wayBernát Gábor
09/23/2024, 10:59 PM