在下面的示例中,如何使compilerConstants可见以编译任务?它与foo任务一起正常工作。
也许有人可以建议这样做的更好方法?基本上,我需要能够设置桌面或移动编译,并且仅这些参数有所不同。
编辑:这是我情况的一个非常简化的示例。我的实际编译任务有20余行内容,只有compileConstants是3个不同设置之间的一个变量。
String AIR_HOME = System.getenv('FLEX_HOME')
def compilerConstants = []
task setupDesktop << {
compilerConstants.push('-define=BUILD::desktop,true')
}
task setupMobile << {
compilerConstants.push('-define=BUILD::desktop,false')
}
task compile (type: JavaExec) {
main = "com.adobe.flash.compiler.clients.MXMLC"
classpath = files("${AIR_HOME}/lib/compiler.jar")
def argsList = []
// compiler constants
argsList = (argsList << compilerConstants).flatten()
println 'compile args: ' + argsList
args = argsList
}
task foo << {
def argsList = []
argsList = (argsList << compilerConstants).flatten()
println 'foo args: ' + argsList
}
最佳答案
设置compilerConstants
是配置行为,因此不应由任务完成。解决方案是声明两个JavaExec
任务:“compileDesktop”和“compileMobile”。可以排除共同点,但在这种情况下可能不值得。