在build.gradle中定义全局变量和函数

lap*_*ots 14 groovy gradle

有没有办法定义全局变量build.gradle并使它们可以从任何地方访问.

我的意思是这样的

def variable = new Variable()

def method(Project proj) {
    def value = variable.value
}
Run Code Online (Sandbox Code Playgroud)

因为那样它告诉我它cannot find property.我也想对这些方法做同样的事情.我的意思是这样的

def methodA() {}
def methodB() { methodA() }
Run Code Online (Sandbox Code Playgroud)

RaG*_*aGe 15

使用额外的属性.

ext.propA = 'propAValue'
ext.propB = propA
println "$propA, $propB"

def PrintAllProps(){
  def propC = propA
  println "$propA, $propB, $propC"
}

task(runmethod) << { PrintAllProps() }
Run Code Online (Sandbox Code Playgroud)

运行runmethod打印:

gradle runmethod
propAValue, propAValue
:runmethod
propAValue, propAValue, propAValue
Run Code Online (Sandbox Code Playgroud)

在此处阅读有关Gradle Extra Properties的更多信息.

你应该能够从函数调用函数而不做任何特殊的事情:

def PrintMoreProps(){
  print 'More Props: '
  PrintAllProps()
}
Run Code Online (Sandbox Code Playgroud)

结果是:

More Props: propAValue, propAValue, propAValue
Run Code Online (Sandbox Code Playgroud)