【发布时间】:2016-06-10 07:17:08
【问题描述】:
是否可以在 gradle 构建脚本中使用嵌套属性对全局变量进行分组?
如果gradle.properties 文件包含
mavenUpload.serverUrl=https://someServer.org/mavenrepository
我可以在像 ${mavenUpload.serverUrl} 这样的 gradle 脚本中使用它吗?
// in master gradle.build
task uploadArchives {
description = "Upload to maven repository '${mavenUpload.serverUrl}'."
// call all uploadArchives in the sub projects
dependsOn { subprojects.uploadArchives }
}
是否甚至可以像这样动态创建嵌套属性
ext {
mavenUpload {
serverUrl='https://someServer.org/mavenrepository'
login='myUsername'
password='myTopSecretPassword'
}
}
有没有办法在 gradle 中做类似的事情?
我目前的解决方法是使用下划线“_”而不是点“。”
我在 gradle 2.13 中尝试过的内容
ext {
// works as expected
myglobal='my global value'
// error :-(
myGlobalNested1 {
myNested='my nested value'
}
// error :-(
myGlobalNested2.ext {
myNested='my nested value'
}
// error :-(
myGlobalNested4.ext.myNested='my nested value'
// error :-(
myGlobalNested5.myNested='my nested value'
myGlobalNested3 = new HashMap<String,Object>()
}
// error :-(
myGlobalNested3.ext.myNested='my nested value'
task demo {
// works as expected
ext.mylocal='my local value'
print """
myglobal = ${myglobal}
mylocal = ${mylocal}
demo.mylocal = ${demo.mylocal}
myGlobalNested.myNested = ${myGlobalNested.myNested}
"""
}
[更新 2016-06-11 @opal]
此脚本无法编译。带有// error :-( 的部分会导致编译错误
【问题讨论】:
-
对我来说这个问题有点不清楚。您能否提供一个不起作用的 desired 脚本示例?
标签: gradle