我目前正在为几个项目开发一个小型共享插件,最干净的解决方案是如果我可以读取和处理该插件提供的资源文件。然而,Java/Kotlin 风格
this.javaClass.getResouce(...)
总是返回 null
|- src/main/kotlin/myplugin.gradle.kts
|- src/main/resources/file.txt
|- build.gradle.kts
|- settings.gradle.kts
myplugin.gradle.kts
tasks {
val mytask by registering(DefaultTask::class)
mytask {
doLast {
println(this.javaClass.getResource("file.txt")) // Always returns `null`
}
}
}
是否有一种干净简单的方法来访问/读取插件本身提供的资源文件?
PS:
this.javaClass
是 org.gradle.api.DefaultTask_Decorated
,它确实解释了为什么找不到该文件。然而,它并不能帮助我阅读实际的资源文件。
您正在脚本文件中编写插件并打算在其他项目中使用它?我认为这是不寻常的,我不确定是否有一种简单的方法来发布这样的插件,更不用说定义访问资源文件的方法了。
相反,在常规类中编写共享插件,Gradle 将其称为二进制插件。
Plugin<Project>
接口的类中定义的。然后,一旦你有了一个类,你就可以在 JVM 上编写常规代码,并且可以以正常方式访问类路径中包含的资源。
此外,如果您使用 Kotlin,请在带有
build.gradle.kts
的项目中编写此类,该项目应用 kotlin-dsl
插件,您将可以访问构建脚本中期望的许多 Kotlin 功能。该插件还应用了 Java Gradle Plugin,为您提供轻松打包插件所需的功能。