I'm having a hard time compiling my application using Flex 3 Ant tasks. When
I compile it in Flex Builder, using the default compiler, everything works
fine. But when I try to build it from the command line (which I need to do
on my continuous integration server) using the attached ant build file, I
always get the following error:
main:
[mxmlc] Loading configuration file /Applications/Adobe Flex Builder 3
Plug-in/sdks/3.1.0/frameworks/flex-config.xml
[mxmlc] /Users/sarbogast/dev/myapp/flex/src/index_384727.cache (No such
file or directory)
[mxmlc] Error: Java heap space
[mxmlc]
[mxmlc] java.lang.OutOfMemoryError: Java heap space
[mxmlc] at
macromedia.asc.parser.NodeFactory.qualifiedIdentifier(NodeFactory.java:1779)
[mxmlc] at
macromedia.asc.parser.NodeFactory.qualifiedIdentifier(NodeFactory.java:1773)
[mxmlc] at
macromedia.asc.parser.NodeFactory.binaryFunctionDefinition(NodeFactory.java:719)
[mxmlc] at macromedia.abc.AbcParser.methodTrait(AbcParser.java:698)
[mxmlc] at macromedia.abc.AbcParser.methodTrait(AbcParser.java:516)
[mxmlc] at macromedia.abc.AbcParser.parseTraits(AbcParser.java:1130)
[mxmlc] at macromedia.abc.AbcParser.classTrait(AbcParser.java:1064)
[mxmlc] at macromedia.abc.AbcParser.parseTraits(AbcParser.java:1144)
[mxmlc] at macromedia.abc.AbcParser.parseScript(AbcParser.java:1197)
[mxmlc] at macromedia.abc.AbcParser.parseAbc(AbcParser.java:108)
[mxmlc] at flex2.compiler.abc.Compiler.parse1(Compiler.java:179)
[mxmlc] at flex2.compiler.API.parse1(API.java:2315)
[mxmlc] at flex2.compiler.API.parse1(API.java:2268)
[mxmlc] at flex2.compiler.API.batch2(API.java:369)
[mxmlc] at flex2.compiler.API.batch(API.java:1117)
[mxmlc] at flex2.compiler.API.compile(API.java:1311)
[mxmlc] at flex2.compiler.API.compile(API.java:1210)
[mxmlc] at flex2.tools.Compiler.mxmlc(Compiler.java:240)
[mxmlc] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[mxmlc] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[mxmlc] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[mxmlc] at java.lang.reflect.Method.invoke(Method.java:597)
[mxmlc] at flex.ant.FlexTask.executeInProcess(FlexTask.java:310)
[mxmlc] at flex.ant.FlexTask.execute(FlexTask.java:243)
[mxmlc] at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[mxmlc] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[mxmlc] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[mxmlc] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[mxmlc] at java.lang.reflect.Method.invoke(Method.java:597)
[mxmlc] at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
[mxmlc] at org.apache.tools.ant.Task.perform(Task.java:348)
[mxmlc] at org.apache.tools.ant.Target.execute(Target.java:357)
BUILD FAILED
/Users/sarbogast/dev/myapp/flex/build.xml:12: mxmlc task failed
Yet, I've already set the memory limit to the maximu on my machine. Any
idea?
--
Sébastien Arbogast
http://sebastien-arbogast.com
<project basedir="." default="main" name="myapp">
<taskdef resource="flexTasks.tasks" classpath="${basedir}/../library/ant/flexTasks.jar" />
<property environment="env" />
<property name="FLEX_HOME" value="${env.FLEX_HOME}" />
<property name="src.dir" value="${basedir}/src" />
<property name="output.dir" value="${basedir}/../public" />
<property name="lib.dir" value="${basedir}/../library/flex" />
<target name="main" depends="wrapper">
<mxmlc file="${src.dir}/index.mxml" output="${output.dir}/index.swf" keep-generated-actionscript="false" incremental="true">
<jvmarg value="-Xmx2048M" />
<jvmarg value="-Xms512M" />
<locale>en_US</locale>
<locale>fr_BE</locale>
<source-path>src</source-path>
<source-path>src/locale/{locale}</source-path>
<allow-source-path-overlap>true</allow-source-path-overlap>
<load-config filename="${FLEX_HOME}/frameworks/flex-config.xml" />
<source-path path-element="${FLEX_HOME}/frameworks" />
<services>src/services-config.xml</services>
<license product="flexbuilder3" serial-number="XXXX-XXXX-XXXX-XXXX-XXXX-XXXX"/>
<compiler.include-libraries dir="${lib.dir}" append="true">
<include name="flexlib.swc" />
<include name="datavisualization.swc"/>
<include name="datavisualization_rb.swc"/>
</compiler.include-libraries>
</mxmlc>
</target>
<target name="wrapper">
<html-wrapper title="My Application" file="index.html"
height="100%" width="100%" application="app" swf="index" version-major="9" version-minor="0" version-revision="0" history="true"
template="client-side-detection" output="${output.dir}" />
</target>
<target name="clean">
<delete includeemptydirs="true">
<!-- Deletes playerProductInstall.swf -->
<fileset dir="${output.dir}" includes="playerProductInstall.swf" defaultexcludes="false" />
<!-- Deletes history -->
<fileset dir="${output.dir}/history" includes="**/*" />
<!-- Deletes index.html -->
<fileset dir="${output.dir}" includes="index.html" defaultexcludes="false" />
<!-- Deletes and AC_OETags.js -->
<fileset dir="${output.dir}" includes="AC_OETags.js" defaultexcludes="false" />
<!-- Deletes index.swf -->
<fileset dir="${output.dir}" includes="index.swf" defaultexcludes="false" />
</delete>
</target>
</project>