我正在build.gradle中定义一个额外的属性:
ext {
GRGIT_TARGET_REPO = ...
}
我在buildSrc / src / main / groovy下有一个groovy类
class Utils {
def test() {
println GRGIT_TARGET_REPO
}
}
我还有另一个gradle文件,可以正常访问GRGIT_TARGET_REPO。但是,如果它在类中调用了该函数:
Utils utils = new Utils()
utils.test()
调用上述函数时,出现以下错误:
No such property: GRGIT_TARGET_REPO for class: Utils
是否可以访问Groovy类中的项目/附加属性?
答案 0 :(得分:1)
我相信您需要将gradle project
对象发送到Utils类中,以完成所需的操作。换句话说:
class Utils {
def project
def test() {
println(project.ext.GRGIT_TARGET_REPO)
}
}
和
def utils = new Utils(project: project)
utils.test()
在build.gradle文件中。
每个gradle构建文件都有一个project
instance作为其委托,这意味着您可以直接从构建文件代码中调用project class中的所有方法。这里的示例是上面的project
访问在项目对象上调用了getProject方法。
对于额外的属性,上面的groovy / javadoc中有一个Project对象的“额外属性”部分。