groovy类(位于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)
}
通过静态方法调用进行隐式访问(这是所需的访问模式)
import org.gradle.api.Project
class MyClazz {
static void foo() {
println Project.getProject().version
}
}
build.gradle中的任务
task foo() << {
MyClazz.foo()
}
答案 0 :(得分:0)
您可以使用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()
}
}