【问题标题】:Get ClassLoader from gradle org.gradle.api.Project?从 gradle org.gradle.api.Project 获取 ClassLoader?
【发布时间】:2017-09-14 14:36:56
【问题描述】:
我正在写一个gradle plugin,希望从应用此插件的项目的资源中读取特定的属性文件。要阅读这些资源,我需要项目的类路径。目前我要去:
org.gradle.api.Project.getBuildscript().getClassLoader().getResourcesAsStream(...)
但即使该项目中存在此类资源,它也始终返回 null。
【问题讨论】:
标签:
java
gradle
gradle-plugin
【解决方案1】:
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" ))) {
//...
}