views:

148

answers:

3

I'm trying to pass a build number from Hudson into a Flex application.

I've found Adobe's document (http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_21.html) on conditional compilation which seems it should solve it but i must be missing something.

So in my ant build file i have:-

<mxmlc
        file="${app.dir}/${application.name}.mxml"
        output="${dist.dir}/${application.name}.swf"
        context-root="${application.name}"
        debug="true"
        locale="${locales}"
        allow-source-path-overlap="true">
        <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>
        <compiler.library-path dir="${lib.dir}" append="true">
            <include name="*.swc" />
        </compiler.library-path>
        <define name="BUILD::BuildNumber" value="'20100707.800'"/>
        <source-path path-element="${src.dir}"/>
        <source-path path-element="${cfg.dir}"/>
        <source-path path-element="${locale.dir}" />
</mxmlc>

Then i'm trying to retrieve with

public static const buildNumber:String = BUILD::BuildNumber;

However the compiler is rejecting with

SomeModel.as(31): col: 47 Error: Access of undefined property BUILD. [mxmlc] private static const _buildNumber:String = BUILD::BuildNumber;

Any suggestions?

A: 

There's a comment by Laurynas Stančikas saying you should use &quot; :

To pass string with Ant (when using mxmlc task), use &quot;. For example:

    <compiler.define name="NAMES::AppName" value="&quot;'FooBar'&quot;" />

Have you tried that?

bug-a-lot
I have tried this. However it's invalid as it is, ant complains that you can't have both the ' and the " on the same entry...
Decado
A: 

I just solved a javascript flashvars problem with quotes, which inspired a "try this" idea:

Try escaping:

<compiler.define name="NAMES::AppName" value="\'FooBar\'" />

Michael Prescott
Just found the latest documentation on conditional compiles and Adobe shows something similar. They're mostly showing command-line arguments, but perhaps the escape sequence will pass through ant. See "Passing Strings" at http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7abd.html
Michael Prescott
+1  A: 

It's definitely a quoting issue. I fought this for quite a while. However I use the tag in ant to run mxmlc and compc so not sure if my resolution is the same. This certainly works for me tho:

<arg value="-define+=ENV::build,&quot;${build.id}&quot;" />
<arg value="-define+=ENV::version,&quot;${build.version}&quot;" />

Can I suggest you try:

<define name="BUILD::BuildNumber" value="&quot;20100707.800&quot;"/>
SqueeDee