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
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.
gradlegradle init --dsl kotlinbuildSrc/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 = ""
}
buildSrc/build.gradle.kts:plugins {
`kotlin-dsl`
`java-gradle-plugin`
}
gradlePlugin {
(plugins) {
"greet-plugin" {
id = "greet"
implementationClass = "GreetingPlugin"
}
}
}
build.gradle.kts:plugins {
id("greet")
}
greeting {
message.set("Hi from Gradle")
}
gradle:
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
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.
Most helpful comment
Thanks for the report @IgorAufricht,
I think you hit #807, try moving your
buildSrccode in a package.