Gradle插件读取配置
我为Gradle编写了一个插件,需要根据扩展配置创建动态任务。 build.gradle文件中的示例:Gradle插件读取配置,gradle,Gradle,我为Gradle编写了一个插件,需要根据扩展配置创建动态任务。 build.gradle文件中的示例: exampleext { t1 { } t2 { } } 所以我想创建一些任务,比如sometask#t1和sometask#t2等等。 我找不到任何信息,如何阅读此闭包配置并将其用于构建这些任务?它只在任务中读取,但我想在执行任务之前使用它。 提前感谢。您可以使用Groovy的动态功能: class ExamplePlugin implements Plug
exampleext {
t1 {
}
t2 {
}
}
所以我想创建一些任务,比如sometask#t1和sometask#t2等等。
我找不到任何信息,如何阅读此闭包配置并将其用于构建这些任务?它只在任务中读取,但我想在执行任务之前使用它。
提前感谢。您可以使用Groovy的动态功能:
class ExamplePlugin implements Plugin<Project> {
void apply(Project project) {
project.extensions.create("exampleext", ExampleExt, project)
}
}
class ExampleExt {
Project project
ExampleExt(Project project) {
this.project = project
}
def methodMissing(String name, Object args) {
def configClosure = args ? args[0] : {}
project.tasks.create(name: "sometask#$name", type: Copy, configClosure)
}
}
apply plugin: ExamplePlugin
exampleext {
t1 {
from "src/main/java"
into "$buildDir/tmp/main"
}
t2 {
from "src/test/java"
into "$buildDir/tmp/test"
}
}
是由
void versions(Closure closure) {
closure.delegate = new Versions()
closure()
}
private class Versions {
@Override
Object invokeMethod(String name, Object args) {
project.configurations.maybeCreate(name)
return project.dependencies.invokeMethod(name, args)
}
}
但是,也许您应该看看孵化gradle模型()
void versions(Closure closure) {
closure.delegate = new Versions()
closure()
}
private class Versions {
@Override
Object invokeMethod(String name, Object args) {
project.configurations.maybeCreate(name)
return project.dependencies.invokeMethod(name, args)
}
}