Skip to content

goomph-4.4.0/AptEclipsePlugin breaks when setting processorOptions #219

@lkoe

Description

@lkoe

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions