zor*_*b76 6 properties build gradle
我有一个与此类似的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()
}
Run Code Online (Sandbox Code Playgroud)
当我运行脚本时,我得到:
groovy.lang.MissingPropertyException: Cannot get property 'dir' on extra properties extension as it does not exist
Run Code Online (Sandbox Code Playgroud)
无论我尝试什么,我都无法从"分机"中读取任何属性.从方法中可以看出(比如我的例子中的"build()"),但是除了默认的任务之外没有任何其他任务(在我的例子中是"init").
我知道"ext"属性应该可以从项目内的任何地方访问,所以我做错了什么?
更新: 我正在努力实现的工作流程(由Opal提出):
我需要使用一个脚本构建几个环境.这些环境中的每一个都列在CSV文件中,并带有以下行:<environment>,<version>
.
然后脚本需要执行以下操作:
${ANT_HOME}/bin/ant -f $checkedOutCodeDirectory/Build/build-all.xml target1
,然后target2
和target3
)这需要针对每个环境执行
应该ext
通过project
实例创建额外的属性,但是根本不需要任何实例来引用它们:project.dir
或者dir
,所以对脚本的第一个更改将是:
ext {
dir = null
}
task init << {
build()
}
task buildAll(type: Exec){
workingDir dir // ext.dir -> dir
commandLine 'cmd', '/c', "echo %JAVA_HOME%"
}
def build(){
ext.dir = "asdf"
buildAll.execute()
}
Run Code Online (Sandbox Code Playgroud)
现在,在执行任何任务或方法之前,buildAll
将读取并解析脚本,然后在运行任何其他部分之前配置整个主体.因此它总是会失败,因为dir
财产没有价值.证明:
ext {
dir = null
}
task init << {
build()
}
task buildAll(type: Exec){
workingDir dir ? dir : project.rootDir
commandLine 'cmd', '/c', "echo %JAVA_HOME%"
}
def build(){
ext.dir = "asdf"
buildAll.execute()
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8255 次 |
最近记录: |