如何在Groovy类中访问build.gradle中定义的其他属性?

时间:2019-05-22 14:28:39

标签: gradle groovy properties

我正在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类中的项目/附加属性?

1 个答案:

答案 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对象的“额外属性”部分。