-
Notifications
You must be signed in to change notification settings - Fork 33
Closed
Labels
Description
I am setting annotation processor options via the EclipseModel/EclipseJdtApt extension.
val mapStructOpts = mapOf(
"mapstruct.suppressGeneratorTimestamp" to "true",
"mapstruct.suppressGeneratorVersionInfoComment" to "true",
"mapstruct.defaultComponentModel" to "spring",
"mapstruct.unmappedTargetPolicy" to "WARN"
)
project.tasks.withType<JavaCompile>().configureEach {
options.compilerArgs = options.compilerArgs + mapStructOpts.map { "-A${it.key}=${it.value}" }
}
project.extensions.configure<EclipseModel> {
(jdt as ExtensionAware).extensions.getByType(EclipseJdtApt::class).apply {
processorOptions = processorOptions.orEmpty() + mapStructOpts
}
}
This breaks in goomph-4.4.0 with the following exception
Caused by: org.gradle.api.UnknownDomainObjectException: Extension of type 'AptPlugin.AptOptions' does not exist. Currently registered extension types: [ExtraPropertiesExtension]
at org.gradle.internal.extensibility.ExtensionsStorage.getHolderByType(ExtensionsStorage.java:89)
at org.gradle.internal.extensibility.ExtensionsStorage.getByType(ExtensionsStorage.java:74)
at org.gradle.internal.extensibility.DefaultExtensionContainer.getByType(DefaultExtensionContainer.java:117)
at org.gradle.internal.extensibility.DefaultExtensionContainer.getByType(DefaultExtensionContainer.java:112)
at com.diffplug.gradle.eclipse.apt.AptEclipsePlugin.lambda$configureJdtApt$3(AptEclipsePlugin.java:125)
at org.gradle.api.internal.provider.ValueSupplier$Present.transform(ValueSupplier.java:520)
at org.gradle.api.internal.provider.TransformBackedProvider.mapValue(TransformBackedProvider.java:91)
at org.gradle.api.internal.provider.TransformBackedProvider.calculateOwnValue(TransformBackedProvider.java:82)
at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:115)
at org.gradle.api.internal.provider.MapCollectors$EntriesFromMapProvider.collectEntries(MapCollectors.java:203)
at org.gradle.api.internal.provider.DefaultMapProperty$CollectingSupplier.lambda$calculateOwnValue$1(DefaultMapProperty.java:594)
at org.gradle.api.internal.provider.AbstractCollectingSupplier.calculateValue(AbstractCollectingSupplier.java:87)
at org.gradle.api.internal.provider.DefaultMapProperty$CollectingSupplier.calculateOwnValue(DefaultMapProperty.java:593)
at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:115)
at org.gradle.api.internal.provider.AbstractCollectingSupplier.calculateValue(AbstractCollectingSupplier.java:41)
at org.gradle.api.internal.provider.DefaultMapProperty.calculateValueFrom(DefaultMapProperty.java:348)
at org.gradle.api.internal.provider.DefaultMapProperty.calculateValueFrom(DefaultMapProperty.java:58)
at org.gradle.api.internal.provider.AbstractProperty.doCalculateValue(AbstractProperty.java:176)
at org.gradle.api.internal.provider.AbstractProperty.calculateOwnValue(AbstractProperty.java:169)
at org.gradle.api.internal.provider.AbstractMinimalProvider.getOrNull(AbstractMinimalProvider.java:105)
at com.diffplug.gradle.eclipse.apt.EclipseJdtApt.getProcessorOptions(EclipseJdtApt.java:127)
at com.diffplug.gradle.eclipse.apt.EclipseJdtApt_Decorated.getProcessorOptions(Unknown Source)
at my.gradle.plugins.apt.MapstructPlugin.apply$lambda$4(MapstructPlugin.kt:63)
at my.gradle.plugins.apt.MapstructPlugin$inlined$sam$i$org_gradle_api_Action$0.execute(ExtensionContainerExtensions.kt)
at org.gradle.internal.extensibility.ExtensionsStorage$ExtensionHolder.configure(ExtensionsStorage.java:177)
at org.gradle.internal.extensibility.ExtensionsStorage.configureExtension(ExtensionsStorage.java:70)
at org.gradle.internal.extensibility.DefaultExtensionContainer.configure(DefaultExtensionContainer.java:147)
at my.gradle.plugins.apt.MapstructPlugin.apply(MapstructPlugin.kt:74)
at my.gradle.plugins.apt.MapstructPlugin.apply(MapstructPlugin.kt:35)
This is most likely due to the fact that the creation/registration of AptPlugin.AptOptions compile task extension is now postponed to afterEvaluate.
I can currently work around the issue by moving my configuration code to afterEvaluate as well, however since I am trying to minimize the use of afterEvaluate, that's a bit unfortunate.
Effectively this means that the configuration of the EclipseJdtApt extension should not be dependent on the AptPlugin.AptOptions task extension.