By the document:
https://docs.gradle.org/current/userguide/java_gradle_plugin.html
the plugin java-gradle-plugin
adds the gradleApi()
dependency to the api
configuration.
I developed a Gradle plugin by java-gradle-plugin
:
and I provide an example to use the plugin:
However, I find if I remove the line implementation gradleApi()
from example/build.gradle, the example will run (./gradlew :example:run
) to fail with the errors
Exception in thread "main" java.lang.NoClassDefFoundError: org/gradle/tooling/GradleConnector
at com.github.MrRogerHuang.GradleProjectRunner.run(GradleProjectRunner.kt:33)
at com.github.MrRogerHuang.GradleProjectRunner.run$default(GradleProjectRunner.kt:32)
at com.github.MrRogerHuang.ExampleKt.main(Example.kt:6)
at com.github.MrRogerHuang.ExampleKt.main(Example.kt)
Caused by: java.lang.ClassNotFoundException: org.gradle.tooling.GradleConnector
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 4 more
I check build/publish-generated-resources/pom.xml
generated by ./gradlew publishPlugins
and find there is no dependencies tag related to any Gradle API. Why does java-gradle-plugin
add gradleApi()
api dependency, but not generate any dependencies tag to pom.xml?