【发布时间】:2015-07-06 13:53:01
【问题描述】:
我有一个类似这样的 Gradle 脚本:
ext {
dir = null
}
task init << {
build()
}
task buildAll(type: Exec){
workingDir ext.dir
commandLine 'cmd', '/c', "echo %JAVA_HOME%"
}
def build(){
ext.dir = "asdf"
buildAll.execute()
}
当我运行脚本时,我得到:
groovy.lang.MissingPropertyException: Cannot get property 'dir' on extra properties extension as it does not exist
无论我尝试了什么,我都无法从“ext”中读取属性。它可以从方法中看到(例如我的示例中的“build()”),但不能从除默认任务(在我的示例中为“init”)之外的任何其他任务中看到。
我知道“ext”属性应该可以从项目内的任何地方访问,那么我做错了什么?
更新: 我试图实现的工作流程(如 Opal 所要求的):
我需要使用一个脚本构建多个环境。这些环境中的每一个都列在一个 CSV 文件中,其中包含一行:<environment>,<version>。
然后脚本需要执行以下操作:
- 删除现有目录
- 从 SVN 签出代码到新目录(目录和 SVN url 取决于环境和版本)
- 复制一些设置文件(路径取决于版本)
- 编辑其中一些设置文件(值取决于环境和版本)
- 设置一些环境变量(JAVA_HOME、ANT_HOME...)(取决于版本)
- 运行三个构建命令(
${ANT_HOME}/bin/ant -f $checkedOutCodeDirectory/Build/build-all.xml target1,然后是target2和target3)
这需要针对每个环境执行
【问题讨论】:
标签: properties gradle build