Определяет в действии скрипт - PullRequest
6 голосов
/ 07 июля 2010

Я пытаюсь передать номер сборки Хадсона в приложение Flex.

Я нашел документ Adobe (http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_21.html) об условной компиляции, который, похоже, должен решить эту проблему, но я должен что-то упустить.

Итак, в моем файле сборки ant есть: -

<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>

Тогда я пытаюсь получить с

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

Однако компилятор отклоняет с помощью:

SomeModel.as (31): col: 47 Ошибка: доступ к неопределенному свойству BUILD.
[mxmlc] приватное статическое const _buildNumber: String = BUILD :: BuildNumber;

Есть предложения?

Ответы [ 4 ]

2 голосов
/ 13 января 2011

Комбинация других предложений здесь, похоже, работает.

Это должно быть в вашем build.xml (предполагается, что ваш build.xml уже присвоил значение BUILD_NUMBER до этого момента):

<mxmlc>
    ...
    <define name="CONFIG::build" value="&quot;${BUILD_NUMBER}&quot;" />
    ...      
</mxmlc>

Обратите внимание на использование &quot; без кавычек.Также обратите внимание, что вы можете использовать этот синтаксис с compc.

Тогда ваш код Actionscript может иметь что-то вроде этого:

public static const buildNumber:String = CONFIG::build;

Я не думаю, что вам обязательно нужно использовать пространство имен CONFIG,но это популярное соглашение.

1 голос
/ 26 июля 2010

Это определенно вопрос цитирования.Я боролся с этим довольно долго.Однако я использую тег в ant для запуска mxmlc и compc, поэтому не уверен, что мое разрешение совпадает.Это, безусловно, работает для меня, хотя:

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

Могу я предложить вам попробовать:

<define name="BUILD::BuildNumber" value="&quot;20100707.800&quot;"/>
0 голосов
/ 16 июля 2010

Я только что решил проблему javascript flashvars с кавычками, которая вдохновила идею «попробуй это»:

Попробуйте экранировать:

0 голосов
/ 07 июля 2010

Laurynas Stančikas комментирует, что вы должны использовать &quot;:

Для передачи строки с помощью Ant (при использовании задачи mxmlc) используйте &quot;.Например:

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

Вы пробовали это?

...