2013-10-08 67 views
8

在我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()) 
} 

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

task showTime() << { 
    println buildTime() 
} 

,但我得到“莫非找不到方法buildTime()在根项目上的参数[] ...“

Thx提前!

回答

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()) 
    }  
} 

的build.gradle

task showBuildTime() << { 
    println buildTime() 
} 
+2

这只是让人疯狂的东西。做一些简单的事情“包含是绝望的钝的ps。我也相信这可以通过在全局上下文中定义'showBuildTime()'来解决(”=“v。”<<“)。 –

+0

我正在使用但是你知道如何从buildTime()主体调用project.ext中定义的另一个方法吗? – ATom

+0

带参数的函数怎么办? –