【问题标题】:Adding project resources to Gradle Custom plugin将项目资源添加到 Gradle 自定义插件
【发布时间】:2019-07-05 20:38:50
【问题描述】:

我正在构建一个自定义 gradle 插件,该插件在应用于项目时将使用项目资源文件夹中的配置文件来填充一些模板并生成一些其他配置文件。

但是当我将插件中的文件作为类路径资源读取时,它会因为找不到文件而失败。

public class VideoBuildPlugin implements Plugin<Project> {

    @Override
    public void apply(Project target) {
        String file = "app/config/dev.yml"; // These files reside in the resources of the project folder
        VideoBuildPlugin.class.getClassLoader().getResourceAsStream(file); // This line fails
    }
}

我是否必须将项目资源添加到构建插件的类路径才能使其正常工作?

【问题讨论】:

    标签: gradle groovy build.gradle gradle-plugin gradle-custom-plugin


    【解决方案1】:

    您可以将显式文件添加到 buildscript 类路径(在您应用自定义插件的应用中):

    buildscript {
        dependencies {
            classpath files("src/main/resources")
        }
    }
    

    虽然我不确定这是否是最好的方法。

    或者: 您可以访问主sourceSet中的“资源”文件夹

            def javaPlugin = project.convention.getPlugin(JavaPluginConvention.class)
    
            def mainSourceSet = javaPlugin.sourceSets.getByName("main")
            def resources = mainSourceSet.getResources()
    
            resources.srcDirs[0].resolve("app/config/dev.yml")
    

    【讨论】:

    • 有什么方法可以将这些主要资源添加到 Build ClassLoader 中,以便 getResourceAsStream(file) 直接为我工作。我正在使用一些从我的构建插件中调用的遗留代码.我不允许修改这个遗留代码。
    猜你喜欢
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多