使用 Gradle 插件中的资源文件

问题描述 投票:0回答:1

我目前正在为几个项目开发一个小型共享插件,最干净的解决方案是如果我可以读取和处理该插件提供的资源文件。然而,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
,它确实解释了为什么找不到该文件。然而,它并不能帮助我阅读实际的资源文件。

kotlin gradle plugins embedded-resource
1个回答
0
投票

您正在脚本文件中编写插件并打算在其他项目中使用它?我认为这是不寻常的,我不确定是否有一种简单的方法来发布这样的插件,更不用说定义访问资源文件的方法了。

相反,在常规类中编写共享插件,Gradle 将其称为二进制插件

通过这种方法,您的插件是在实现

Plugin<Project>
接口的类中定义的。然后,一旦你有了一个类,你就可以在 JVM 上编写常规代码,并且可以以正常方式访问类路径中包含的资源。

此外,如果您使用 Kotlin,请在带有

build.gradle.kts
的项目中编写此类,该项目应用
kotlin-dsl
插件,您将可以访问构建脚本中期望的许多 Kotlin 功能。该插件还应用了 Java Gradle Plugin,为您提供轻松打包插件所需的功能。

© www.soinside.com 2019 - 2024. All rights reserved.