如何将 build.gradle 中的 gradle jar 配置翻译成插件代码

How to translate gradle jar config in build.gradle into plugin code

我早些时候问过 this question 关于以特定方式配置 jar 任务的问题。我现在需要将其转换为自定义插件中的代码。

build.gradle 中的工作配置是这样的:

jar {
    exclude "yang"
    from ("src/main/resources/yang") {
        into ("META-INF/yang")
    } 
}

这正确地将 classes 置于根目录,但将 "src/main/resources/yang" 中的文件放入 "META-INF/yang"。

在我的自定义插件的 "apply" 方法中,我尝试在 "project.afterEvaluate()" 闭包中这样做:

Jar jarTask = project.getTasks().getByName("jar")
jarTask.exclude("yang")
jarTask.from(task.yangFilesRootDir)
jarTask.into("META-INF/yang")

从 API "Jar" 的文档中,我看不出有任何其他方法可以做到 "looks like" 我在构建脚本中的内容。

这行不通。它确实将 "src/main/resources/yang" 中的文件放入 "META-INF/yang",但它也将所有 class 文件放在那里。

假设您的插件是在 Groovy 中实现的,您需要将对 into() 的调用移动到传递给 from() 方法的配置闭包。

jarTask.from(task.yangFilesRootDir) {
    into 'META-INF/yang'
}