我正在编写一个插件,其中包含以下内容:
project.extensions.create('myExtension', new MyExtension(project))
其中MyExtension
是定义我的新功能的类。
现在,gradle.build
我可以这样做:
myExtension {
// configure cool stuff
}
我现在要做的是在这个配置闭包中“消耗”一些东西,并使用project.configure(myTask, closure)
将剩下的闭包原样传递给我定义的任务。但是,我不知道如何
从MyExtension
类访问配置闭包。
“消耗”一些闭包,即访问闭包上的一些属性,然后剥离它们,留下另一个闭包,其中包含所有未触及的东西,但没有别的
任何指针都会非常感激=)
答案 0 :(得分:1)
扩展不起作用。立即评估闭包以配置扩展对象。在那之后,关闭消失了。通常,插件将使用(扩展对象中包含的信息)进一步配置任务。
PS:它是extensions.create('myExtension', MyExtension, project)
,而不是project.extensions.create('myExtension', new MyExtension(project))
。
答案 1 :(得分:0)
您可以做的一件事是在您的分机上调用方法并提供"配置"作为封闭。而不是
// build.gradle
myExtension {
// configure cool stuff
}
你写了
// build.gradle
myExtension.config {
// configure cool stuff
}
扩展类中的相应方法如下所示:
// MyExtension.groovy
class MyExtension {
Project project
MyExtension(Project project) {
this.project = project
}
def config(Closure cl) {
// Do stuff with the closure
}
}
但是,当整个闭包被转发到您自己的代码时,您将失去Gradle通常对配置闭包所做的所有评估。