gradle在不相关的项目之间共享属性

时间:2014-02-20 19:02:23

标签: java gradle

我有一个common.gradle文件,它有共同的属性

def custom = [
status: 'SNAPSHOT',
group: 'com.custom.proj',
version: [
    core: '1.2.0.0',
    modle: '1.2.0.0',
    base: '1.2.0.0' 
    ]
]

并在build.gradle中使用它

apply from: 'file:///E:/gradle/common.gradle'

task props << {
    println "group" + custom.group
}

当我运行gradle道具低于错误时

  

出了什么问题:   任务':props'的执行失败。   无法在任务':props'上找到属性'custom'。

     

尝试:   使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。

1 个答案:

答案 0 :(得分:2)

def custom =声明一个局部变量,该变量在commons.gradle之外不可见。相反,您可以在Project对象上声明额外属性

ext.custom = ... // shorthand for `project.ext.custom = ...`

使用情况将保持不变(例如custom.group ext.custom.group)。

如果要在同一个(多项目)构建中的所有构建脚本之间共享custom,那么将commons.gradle应用于根项目就足够了,因为项目属性从父项继承到儿童项目。