groovy构建脚本类能否直接访问Gradle项目?
groovy类(位于groovy构建脚本类能否直接访问Gradle项目?,gradle,groovy,Gradle,Groovy,groovy类(位于buildSrc/src/main/groovy中)可以直接访问项目吗,还是必须显式地传入项目 我可以通过显式地将项目作为方法参数传入来访问该项目,但我不希望必须传入它。例如,我希望能够通过静态方法调用访问项目。这种类型的隐式访问可能吗 显式访问 import org.gradle.api.Project class MyClazz { static void foo(Project project) { println project.versio
buildSrc/src/main/groovy
中)可以直接访问项目吗,还是必须显式地传入项目
我可以通过显式地将项目作为方法参数传入来访问该项目,但我不希望必须传入它。例如,我希望能够通过静态方法调用访问项目。这种类型的隐式访问可能吗
显式访问
import org.gradle.api.Project
class MyClazz {
static void foo(Project project) {
println project.version
}
}
build.gradle中的任务
task foo() << {
MyClazz.foo(project)
}
task foo() << {
MyClazz.foo()
}
build.gradle中的任务
task foo() << {
MyClazz.foo(project)
}
task foo() << {
MyClazz.foo()
}
task foo()您可以使用Groovy扩展方法来实现这一点
下面是一个自包含的示例,但也应该适用于Gradle:
class Project {
// we add this method dynamically
//static getProject() { [ version: 2.3 ] }
}
class MyClazz {
static void foo() {
println Project.getProject().version
}
}
class Gradle {
static def main(args) {
Project.metaClass.static.getProject = { [ version: 4.2 ] }
MyClazz.foo()
}
}
你如何调用脚本?@AdamSkywalker我更新了问题,将任务包含在build中。gradleI认为你并不比我更了解它-在任务执行期间调用方法没有特定的上下文。gradle API没有Project.getProject()类似项,因此您必须在某些服务设置任务中以参数形式传递Project,或者在执行实际任务之前执行相同的操作。您可以编写插件,然后直接访问Project