我正在研究 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/