init.gradle在构建脚本中的功能

Mik*_*rer 8 gradle

在我的init.gradle中我有

...
// the last thing in init.gradle
def buildTime() {
   def df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") //you can change it
   df.setTimeZone(TimeZone.getTimeZone("UTC"))
   return df.format(new Date())
} 
Run Code Online (Sandbox Code Playgroud)

在我的build.gradle中,我想做这样的事情:

task showTime() << {
    println buildTime()
}
Run Code Online (Sandbox Code Playgroud)

但我得到"找不到根项目中的参数[]的方法buildTime()......"

Thx提前!

Mik*_*rer 6

得到了Gradle-Support的答案. http://goo.gl/5uYInH

也许它可以帮助别人......

init文件是与build.gradle文件不同的上下文.但是您可以使用自定义属性或方法(使用闭包)扩展项目对象(build.gradle委托):

init.gradle

import java.text.SimpleDateFormat
gradle.allprojects{
  ext.buildTime = {
   def df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
   df.setTimeZone(TimeZone.getTimeZone("UTC"))
   return df.format(new Date())
   }    
}
Run Code Online (Sandbox Code Playgroud)

的build.gradle

task showBuildTime() << {
   println buildTime()
}
Run Code Online (Sandbox Code Playgroud)

  • 这只是让人们疯狂的事情.做一些简单的事情就像"包含是绝望的钝".我也相信这可以通过在全局上下文中定义`showBuildTime()`来解决("="v."<<"). (2认同)