I can make this work with the java-gradle-plugin
but I would prefer the kotlin-dsl
to make the plugin.
The difficulty is in how to get a handle to a plugin resources at runtime.
The layout.projectDirectory.dir("src/main/resources")
pulls in the resources of the project using the plugin and not the resources associated with the plugin itself.
The approach I found was to move the logic for reading the resource in the custom task rather than the plugin. Such as in the following:
abstract class FooTask : DefaultTask() {
...
@get:Input
abstract val scriptName: Property<String>
...
@TaskAction
fun exec() {
...
val scriptUrlStream = javaClass.classLoader.resources(scriptName.get())
...