java - 将 Flex 构建 ant 目标转换为 gradle。在 gradle 中运行 flex build 需要什么?

标签 java gradle groovy

我正在研究 gradle 脚本。我对 flex 构建不太了解。我正在尝试将一个 ant 目标转换为 gradle,但由于对 flex 知之甚少,我不确定如何实现这一目标?这个ant目标在linux平台上工作正常,但gradle不工作

Ant 目标

<target name="adminClient">
<if name="build.flash" value="true">
<echo message="mxmlc.exe ${mxmlc.exe}"/>
<echo message="Building AdminClient.swf"/>
<exec executable="${mxmlc.exe}" dir="${basedir}" failonerror="true">
<arg line="'${adminClient.src.module}'"/>
<arg line="-load-config='${build.dir}/ozswfconfig.xml'"/>
<arg line="-load-config+='${build.dir}/license.xml'"/>
<arg line="-output '${package.dir}/AdminClient.swf'"/>
<arg line="-library-path+='${external.lib.dir}/PureMVC_AS3_MultiCore_1_0_4.swc'"/>
<arg line="-library-path+='${flexCommon.lib}'"/>
<arg line="-source-path '${adminClient.src.dir}'"/>
</exec>
<!--  build each tab separatley for new ui  -->
<exec executable="${mxmlc.exe}" dir="${basedir}" failonerror="true">
<arg line="'${adminClient.src.dir}/ConfigurationApp.mxml'"/>
<arg line="-load-config='${build.dir}/ozswfconfig.xml'"/>
<arg line="-load-config+='${build.dir}/license.xml'"/>
<arg line="-output '${package.dir}/ConfigurationApp.swf'"/>
<arg line="-library-path+='${external.lib.dir}/PureMVC_AS3_MultiCore_1_0_4.swc'"/>
<arg line="-library-path+='${flexCommon.lib}'"/>
<arg line="-source-path '${adminClient.src.dir}'"/>
<exec executable="${mxmlc.exe}" dir="${basedir}" failonerror="true">
<arg line="'${adminClient.src.dir}/LargeResultsApp.mxml'"/>
<arg line="-load-config='${build.dir}/ozswfconfig.xml'"/>
<arg line="-load-config+='${build.dir}/license.xml'"/>
<arg line="-output '${package.dir}/LargeResultsApp.swf'"/>
<arg line="-library-path+='${external.lib.dir}/PureMVC_AS3_MultiCore_1_0_4.swc'"/>
<arg line="-library-path+='${flexCommon.lib}'"/>
<arg line="-source-path '${adminClient.src.dir}'"/>
</exec>
</if>
</target>

我在 gradle 脚本中尝试了以下方式,但它不起作用

task adminClient(dependsOn: prepConfigs) {
    println "mxmlc.exe ${mxmlcexe}"
    exec {
        workingDir = file("${projectDir}")
        executable "${mxmlcexe}"
        args ["${adminClientsrcModule}", "-load-config='${Folderdir}/ozswfconfig.xml", "-load-config+='${Folderdir}/license.xml", "-output '${packageDir}/AdminClient.swf", "-library-path+='${externallibDir}/PureMVC_AS3_MultiCore_1_0_4.swc", "-library-path+='${flexCommonLib}", "-source-path '${adminClientsrcDir}"]
   }
    exec {
        workingDir = file("${projectDir}")
        executable "${mxmlcexe}"
        args "${adminClientsrcDir}/ConfigurationApp.mxml", "-load-config='${Folderdir}/ozswfconfig.xml", "-load-config+='${Folderdir}/license.xml", "-output '${packageDir}/ConfigurationApp.swf", "-library-path+='${externallibDir}/PureMVC_AS3_MultiCore_1_0_4.swc", "-library-path+='${flexCommonLib}", "-source-path '${adminClientsrcDir}"
   exec {
        workingDir = file("${projectDir}")
        executable "${mxmlc.exe}"
        args "${adminClientsrcDir}/LargeResultsApp.mxml", "-load-config='${Folderdir}/ozswfconfig.xml", "-load-config+='${Folderdir}/license.xml", "-output '${packageDir}/LargeResultsApp.swf", "-library-path+='${externallibDir}/PureMVC_AS3_MultiCore_1_0_4.swc", "-library-path+='${flexCommonLib}", "-source-path '${adminClientsrcDir}"
   }

  }

有人可以让我知道我是否需要使用任何插件来构建 flex 或如何以正确的方式将此 ant 目标转换为 gradle 吗?

最佳答案

使用隐式 Ant Builder 对 Gradle 进行机械翻译,如下所示:

task adminClient() << {
    // look for -Dbuild.flash on command-line
    def buildFlash = ant.properties['build.flash']

    if (buildFlash) {
        ant.echo(message: "Building AdminClient.swf")

        ant.exec(executable: "{mxmlc.exe}", dir: "${basedir}", failonerror: "true") {
            arg(line: " '${adminClient.src.module}'")
            arg(line: " -load-config='${build.dir}/ozswfconfig.xml'")
            arg(line: " -load-config+='${build.dir}/license.xml'")
            arg(line: " -output '${package.dir}/AdminClient.swf'")
            arg(line: " -library-path+='${external.lib.dir}/PureMVC_AS3_MultiCore_1_0_4.swc'")
            arg(line: " -library-path+='${flexCommon.lib}'")
            arg(line: " -source-path '${adminClient.src.dir}'")
        }
    } else {
        // build each tab separatley for new ui 
        ant.exec(executable: "${mxmlc.exe}", dir: "${basedir}", failonerror: "true") {
            arg(line: " '${adminClient.src.dir}/ConfigurationApp.mxml'")
            arg(line: " -load-config='${build.dir}/ozswfconfig.xml'")
            arg(line: " -load-config+='${build.dir}/license.xml'")
            arg(line: " -output '${package.dir}/ConfigurationApp.swf'")
            arg(line: " -library-path+='${external.lib.dir}/PureMVC_AS3_MultiCore_1_0_4.swc'")
            arg(line: " -library-path+='${flexCommon.lib}'")
            arg(line: " -source-path '${adminClient.src.dir}'")
        }

        ant.exec(executable: "${mxmlc.exe}", dir: "${basedir}", failonerror: "true") {
            arg(line: "'${adminClient.src.dir}/LargeResultsApp.mxml'")
            arg(line: " -load-config='${build.dir}/ozswfconfig.xml'")
            arg(line: " -load-config+='${build.dir}/license.xml'")
            arg(line: " -output '${package.dir}/LargeResultsApp.swf'")
            arg(line: " -library-path+='${external.lib.dir}/PureMVC_AS3_MultiCore_1_0_4.swc'")
            arg(line: " -library-path+='${flexCommon.lib}'")
            arg(line: " -source-path '${adminClient.src.dir}'")
        }
     }
 }

}

只要整理好各种变量(例如 ${build.dir}${flexCommon.lib}),这样的事情就应该可行。我以 build.flash 作为开头举例说明了一个示例。

关于java - 将 Flex 构建 ant 目标转换为 gradle。在 gradle 中运行 flex build 需要什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37127588/

相关文章:

java - 用于不同列表和对象的多个适配器或一个适配器 - 代码性能

spring-boot - 我如何让 Teamcity Artifactory 插件在 Gradle 中调用 bootJar 而不是 Jar?

Grails 外部配置。无法访问外部变量。总是[:]

grails - 从数据库中检索前10000条记录-Grails

groovy - Nextflow:将 fromFilePairs 的输入转换为 (map, list_pair_1, list_pair_2) 的元组

java - 如何用java中给定的替换映射替换某些单词?

java - 如何在 log4j.properties 文件中共享 appenders 属性?

java - 如何检测具有多个显示器的系统中的屏幕位置?

gradle - 如何找到Gradle任务的 `type`?

android - 在vim中格式化通过errorformat解析的文件名