从gradle org.gradle.api.Project获取ClassLoader?

Hen*_*ian 5 java gradle gradle-plugin

我正在编写一个gradle插件,希望从应用此插件的项目的资源中读取特定的属性文件.要读取这些资源,我需要一个项目的类路径.目前我要去:

org.gradle.api.Project.getBuildscript().getClassLoader().getResourcesAsStream(...)
Run Code Online (Sandbox Code Playgroud)

但即使该项目中存在此类资源,它也始终返回null.

gle*_*e8e 0

Gradle buildscript 被编译并放入本地缓存中,因此该项目不在 buildscript 类加载器的类路径上。你需要的可能是org.gradle.api.Project. absoluteProjectPath().

例如要读取“src/main/resources/META-INF/MANIFEST.MF”:

try(Reader in = new FileReader(project.absoluteProjectPath( "src/main/resources/META-INF/MANIFEST.MF" ))) {
    //...
}
Run Code Online (Sandbox Code Playgroud)