Flash 使用GradleFX插件将多个ant mxmlc目标转换为gradle
我有一个使用ANT的复杂java和flash项目。我将项目转换为使用gradle。请有人帮助转换下面的ant目标示例Flash 使用GradleFX插件将多个ant mxmlc目标转换为gradle,flash,gradle,apache-flex,ant,gradlefx,Flash,Gradle,Apache Flex,Ant,Gradlefx,我有一个使用ANT的复杂java和flash项目。我将项目转换为使用gradle。请有人帮助转换下面的ant目标示例 <target name="compile-flash"> <mxmlc file="./flash/src/com/test/Some1.as" output="${build.dir}/flash/Some1.swf" debug="${flash.debug}" fork="true" maxmemory="512m"> &
<target name="compile-flash">
<mxmlc file="./flash/src/com/test/Some1.as" output="${build.dir}/flash/Some1.swf" debug="${flash.debug}" fork="true" maxmemory="512m">
<load-config filename="${FLEX_HOME}/frameworks/flex-config.xml" />
<load-config filename="./flash/conf/config1.xml" />
</mxmlc>
<mxmlc file="./flash/src/com/test/editor/Some2.as" output="${build.dir}/flash/Some2.swf" debug="${flash.debug}" fork="true" maxmemory="512m">
<load-config filename="${FLEX_HOME}/frameworks/flex-config.xml" />
<load-config filename="./flash/conf/config2.xml" />
</mxmlc>
<mxmlc file="${build.dir}/flashtest/flexunitapplication.mxml" output="${build.dir}/flashtest/FlexUnitApplication.swf" debug="true" fork="true">
<load-config filename="${FLEX_HOME}/frameworks/flex-config.xml" />
<load-config filename="flash/test/flexunit-config.xml" />
<compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
<include name="libs" />
</compiler.library-path>
<compiler.library-path dir="${test.lib.dir}" append="true">
<include name="swc"/>
</compiler.library-path>
<compiler.library-path dir="flash" append="true">
<include name="lib/test" />
<include name="lib" />
<include name="bin" />
</compiler.library-path>
<compiler.headless-server>true</compiler.headless-server>
<static-link-runtime-shared-libraries>true</static-link-runtime-shared-libraries>
<compiler.verbose-stacktraces>true</compiler.verbose-stacktraces>
</mxmlc>
<compc output="${build.dir}/swc/client_api_release.swc" incremental="false" benchmark="false" static-link-runtime-shared-libraries="true" compiler.debug="false" debug="false" compiler.optimize="true" compiler.strict="true" compiler.verbose-stacktraces="false" target-player="11.1.0">
<include-sources dir="${generated.actionscript.dir}" includes="**/*.as" />
<compiler.include-libraries dir="${dependencies.lib.dir}/swc/" append="true">
<include name="*.swc" />
<exclude name="*debug*.swc" />
</compiler.include-libraries>
<external-library-path file="${FLEX_HOME}/frameworks/libs/framework.swc" append="true"/>
</compc>
</target>
我知道这不符合惯例。但我不能改变结构,因为这是一个非常古老的项目。对于不同的SWF或SWC,我不能有不同的模块
有人能帮我使用gradleFX gradle插件达到同样的效果吗
提前感谢。您可能需要使用Gradle的最新检查,以便为每个任务设置任务输入和任务输出。可能看起来像
apply plugin: 'base'
task compileFlash {}
task mxmlc1 {
inputs.file 'flash/src/com/test/Some1.as'
inputs.file '${FLEX_HOME}/frameworks/flex-config.xml'
inputs.file 'flash/conf/config1.xml'
outputs.file "${build.dir}/flash/Some1.swf"
doLast {
ant.mxmlc(
file:"flash/src/com/test/Some1.as",
output:"${build.dir}/flash/Some1.swf",
debug="${flash.debug}",
fork="true",
maxmemory="512m"
) {
'load-config'(filename:"${FLEX_HOME}/frameworks/flex-config.xml")
'load-config'(filename:"./flash/conf/config1.xml")
}
}
}
task mxmlc2 { ... }
task mxmlc3 { ... }
compileFlash.dependsOn [mxmlc1, mxmlc2, mxmlc3, ...]
compile.dependsOn compileFlash
task mxmlc1(type:Mxmlx) {
file = '"./flash/conf/config1.xml'
loadConfig "${FLEX_HOME}/frameworks/flex-config.xml"
loadConfig "/flash/conf/config1.xml"
// etc etc
}
这可能会开始变得冗长,因此您可以创建一个自定义任务,以便执行以下操作
apply plugin: 'base'
task compileFlash {}
task mxmlc1 {
inputs.file 'flash/src/com/test/Some1.as'
inputs.file '${FLEX_HOME}/frameworks/flex-config.xml'
inputs.file 'flash/conf/config1.xml'
outputs.file "${build.dir}/flash/Some1.swf"
doLast {
ant.mxmlc(
file:"flash/src/com/test/Some1.as",
output:"${build.dir}/flash/Some1.swf",
debug="${flash.debug}",
fork="true",
maxmemory="512m"
) {
'load-config'(filename:"${FLEX_HOME}/frameworks/flex-config.xml")
'load-config'(filename:"./flash/conf/config1.xml")
}
}
}
task mxmlc2 { ... }
task mxmlc3 { ... }
compileFlash.dependsOn [mxmlc1, mxmlc2, mxmlc3, ...]
compile.dependsOn compileFlash
task mxmlc1(type:Mxmlx) {
file = '"./flash/conf/config1.xml'
loadConfig "${FLEX_HOME}/frameworks/flex-config.xml"
loadConfig "/flash/conf/config1.xml"
// etc etc
}
也许有人甚至为您编写了一个gradle插件?是的,有一个GradleFx插件。但在他们的例子中,他们建议为不同的swf使用不同的模块。这就是为什么我不知道如何在一个项目中拥有多个Mxmlc的原因。好吧,如果你不喜欢这个插件,那么编写你自己的gradle任务来包装flex ant任务就足够简单了。或者你可以像我演示的那样调用ant内联