在下面的示例中,如何使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”。可以排除共同点,但在这种情况下可能不值得。

10-08 15:50