Kotlin-dsl-samples: "Failed to compile accessors" error when using buildSrc plugin with an extension

Created on 20 Aug 2018  路  3Comments  路  Source: gradle/kotlin-dsl-samples

Current behaviour

When having a Kotlin-based gradle project with a plugin with an extension in buildSrc, the build fails:

$ gradle

> Configure project :
e: C:\dev\gradle-home\caches\4.9\gradle-kotlin-dsl-accessors\e4u1kd1s5kd2z5gfrvyt6katp\src\org\gradle\kotlin\dsl\Accessors0.kt:32:28: Conflicting declarations: public val Project.ext: ExtraPropertiesExtension, public val [ERROR : GreetingPluginExtension].ext: ExtraPropertiesExtension
e: C:\dev\gradle-home\caches\4.9\gradle-kotlin-dsl-accessors\e4u1kd1s5kd2z5gfrvyt6katp\src\org\gradle\kotlin\dsl\Accessors0.kt:44:40: Unresolved reference: GreetingPluginExtension
e: C:\dev\gradle-home\caches\4.9\gradle-kotlin-dsl-accessors\e4u1kd1s5kd2z5gfrvyt6katp\src\org\gradle\kotlin\dsl\Accessors0.kt:45:89: Unresolved reference: GreetingPluginExtension
e: C:\dev\gradle-home\caches\4.9\gradle-kotlin-dsl-accessors\e4u1kd1s5kd2z5gfrvyt6katp\src\org\gradle\kotlin\dsl\Accessors0.kt:50:50: Unresolved reference: GreetingPluginExtension
e: C:\dev\gradle-home\caches\4.9\gradle-kotlin-dsl-accessors\e4u1kd1s5kd2z5gfrvyt6katp\src\org\gradle\kotlin\dsl\Accessors1.kt:32:5: Unresolved reference: GreetingPluginExtension
e: C:\dev\gradle-home\caches\4.9\gradle-kotlin-dsl-accessors\e4u1kd1s5kd2z5gfrvyt6katp\src\org\gradle\kotlin\dsl\Accessors1.kt:32:29: Conflicting declarations: public val Project.ext: ExtraPropertiesExtension, public val [ERROR : GreetingPluginExtension].ext: ExtraPropertiesExtension
e: C:\dev\gradle-home\caches\4.9\gradle-kotlin-dsl-accessors\e4u1kd1s5kd2z5gfrvyt6katp\src\org\gradle\kotlin\dsl\Accessors1.kt:38:5: Unresolved reference: GreetingPluginExtension

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'greet-plugin'.
> Could not open cache directory e4u1kd1s5kd2z5gfrvyt6katp (C:\dev\gradle-home\caches\4.9\gradle-kotlin-dsl-accessors\e4u1kd1s5kd2z5gfrvyt6katp).
   > Failed to compile accessors.

         projectSchema: ProjectSchema(extensions=[ProjectSchemaEntry(target=org.gradle.api.Project, name=ext, type=org.gradle.api.plugins.ExtraPropertiesExtension), ProjectSchemaEntry(target=org.gradle.api.Project, name=greeting, type=GreetingPluginExtension), ProjectSchemaEntry(target=GreetingPluginExtension, name=ext, type=org.gradle.api.plugins.ExtraPropertiesExtension)], conventions=[], configurations=[])

         classPath: [C:\dev\gradle-home\caches\4.9\generated-gradle-jars\gradle-api-4.9.jar, C:\dev\apps\gradle-4.9\lib\groovy-all-2.4.12.jar, C:\dev\apps\gradle-4.9\lib\gradle-installation-beacon-4.9.jar, C:\dev\gradle-home\caches\4.9\generated-gradle-jars\gradle-kotlin-dsl-extensions-0.18.4-4.9.jar, C:\dev\apps\gradle-4.9\lib\gradle-kotlin-dsl-0.18.4.jar, C:\dev\apps\gradle-4.9\lib\gradle-kotlin-dsl-tooling-models-0.18.4.jar, C:\dev\apps\gradle-4.9\lib\kotlin-reflect-1.2.41.jar, C:\dev\apps\gradle-4.9\lib\kotlin-stdlib-1.2.41.jar, C:\dev\apps\gradle-4.9\lib\kotlin-stdlib-jdk7-1.2.41.jar, C:\dev\apps\gradle-4.9\lib\kotlin-stdlib-jdk8-1.2.41.jar, C:\dev\gradle-home\caches\jars-3\d7e7123beb5193bab3b184b7a3ea3ca4\buildSrc.jar]

         availableSchema: ProjectSchema(extensions=[ProjectSchemaEntry(target=Accessible(type=org.gradle.api.Project), name=ext, type=Accessible(type=org.gradle.api.plugins.ExtraPropertiesExtension)), ProjectSchemaEntry(target=Accessible(type=org.gradle.api.Project), name=greeting, type=Accessible(type=GreetingPluginExtension)), ProjectSchemaEntry(target=Accessible(type=GreetingPluginExtension), name=ext, type=Accessible(type=org.gradle.api.plugins.ExtraPropertiesExtension))], conventions=[], configurations=[])


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 2s

Steps to Reproduce

Note: The code is based on this sample:
https://github.com/gradle/kotlin-dsl/blob/44868ed7dcd6a1bad53bd5746ab1159e4b3b84a0/samples/provider-properties/build.gradle.kts
I just moved the login to buildSrc and simplified the code for the issue.

Reproduce using a repo

  1. Check out https://github.com/IgorAufricht/kotlin-dsl-failed-to-compile-accessors
  2. Run gradle

Manual steps to reproduce

  1. Create a new Kotlin build: gradle init --dsl kotlin
  2. Create buildSrc/src/main/kotlin/GreetingPlugin.kt:
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.*

open class GreetingPlugin : Plugin<Project> {
    override fun apply(project: Project): Unit = project.run {
        val greeting = extensions.create(
            "greeting",
            GreetingPluginExtension::class.java
        )
    }
}

open class GreetingPluginExtension {
    val message = ""
}
  1. Create buildSrc/build.gradle.kts:
plugins {
    `kotlin-dsl`
    `java-gradle-plugin`
}

gradlePlugin {
    (plugins) {
        "greet-plugin" {
            id = "greet"
            implementationClass = "GreetingPlugin"
        }
    }
}
  1. Update build.gradle.kts:
plugins {
    id("greet")
}

greeting {
    message.set("Hi from Gradle")
}
  1. Run gradle:


Your Environment

This happens regardless of whether I use global gradle installation (Gradle 4.9), standard gradle wrapper or our company's custom gradle wrapper (based on Gradle 4.8).

$ gradle --version

------------------------------------------------------------
Gradle 4.9
------------------------------------------------------------

Build time:   2018-07-16 08:14:03 UTC
Revision:     efcf8c1cf533b03c70f394f270f46a174c738efc

Kotlin DSL:   0.18.4
Kotlin:       1.2.41
Groovy:       2.4.12
Ant:          Apache Ant(TM) version 1.9.11 compiled on March 23 2018
JVM:          1.8.0_111 (Oracle Corporation 25.111-b14)
OS:           Windows 10 10.0 amd64


Most helpful comment

Thanks for the report @IgorAufricht,
I think you hit #807, try moving your buildSrc code in a package.

All 3 comments

Thanks for the report @IgorAufricht,
I think you hit #807, try moving your buildSrc code in a package.

@eskatos That indeed solves the problem, many thanks for the quick response!

Fixed in b45aea4cff215dd0e7cb07fc8ff44ff2fdf08dec.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

iNikem picture iNikem  路  3Comments

cbeams picture cbeams  路  3Comments

mkobit picture mkobit  路  3Comments

JLLeitschuh picture JLLeitschuh  路  3Comments

jaredsburrows picture jaredsburrows  路  3Comments