# Embrace the timeline….

On creating rich, flashy and immersive advertising experiences online by Owen van Dijk

## Odd bug in mxmlc compiler and setting up a build environment with Ant

I ran into an odd bug with the mxmlc compiler while i was setting up a build environment for our project. It turns out the compiler fails if your project does the following:

• Your ‘main’ class ( think of the Document class used in Blaze/Flash 9 ) sits in a package other then the default ( ie. com.foo.bar )
• Your application classes are in a different folder then the Build file ( ie your classes are in a subdirectory called ‘src’ while the Build file sits in the root of your project
• Your project directory sits on a disk that starts with a capital ( ie D:\eclipse instead of d:\eclipse )

The compiler expects a lower case ( ie d:\eclipse\workspace\…. instead of D:\eclipse\workspace\… ) for the -source-file-specs and -file-specs arguments. I solved the problem by setting an Environment variable called eclipseworkspace that i set to d:\eclipse\workspace and then using the following code:



<property environment="env">
<property value="${env.eclipseworkspace}\project\src" name="mxmlc.start"> <target name="compilewithmxmlc"> <exec failonerror="true" executable="${mxmlc.exe}">
<arg line="-source-path ${mxmlc.start}"> <arg line="-file-specs${mxmlc.start}\\com\\foo\\bar\\Application.as">
<arg line="-default-size 960 700"/>
<arg line="-default-frame-rate 31"/>
<arg line="-default-background-color 0xFFFFFF"/>
</exec>
</target>

The compiler now warns me that my source-path is the same as my package but it does compile the code. If i have more time i’ll fix the warnings too but for now this works for me. Normally you let FlexBuilder do all the plumbing code but i wanted my Ant buildfile run standalone ( it checks out the code from SVN, runs some tests, compiles the code, sets up documentation and makes a build.zip ) in a continuous integration process. The error message i got was ‘Error: A file found in a source-path must have the same package structure’ (if you happen to Google on the error code). Good luck! 🙂