- 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.