如何在Gradle中使变量对JavaExec任务可见

时间:2014-10-15 14:33:27

标签: gradle build.gradle

如何在下面的示例中使compilerConstants可见于编译任务?它适用于foo任务。

或许有人可以提出更好的方法来做到这一点?基本上我需要能够设置桌面或移动编译,它只有那些参数不同。

编辑:这是我的情况的一个非常简化的例子。我的实际编译任务有20多行东西,只有compilerConstants是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
}

1 个答案:

答案 0 :(得分:0)

设置compilerConstants是一种配置行为,因此不应由任务完成。解决方案是声明两个JavaExec任务,&#34; compileDesktop&#34;和&#34; compileMobile&#34;。可以考虑共性,但在这种情况下可能不值得。