Почему $ {locale} не разрешается в моей задаче Ant <compc>? - PullRequest
1 голос
/ 27 апреля 2010

Я видел несколько примеров, например. здесь , где люди включают пакеты ресурсов локали, ссылаясь на атрибут локали в элементе. По некоторым причинам это не работает для меня. Вот что у меня есть для задачи:

<compc output="${deploy.dir}/myfrmwrk.swc" locale="en_US">
    <source-path path-element="${basedir}/src/main/flex"/>
    <include-sources dir="${basedir}/src/main/flex" includes="*" />
    <include-libraries file="${basedir}/libs"/>
    <compiler.external-library-path dir="${FLEX_HOME}/frameworks/libs/player/9" append="true">
        <include name="playerglobal.swc"/>
    </compiler.external-library-path>
    <compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
        <include name="libs"/>
        <include name="locale/${locale}"/>
    </compiler.library-path>
    <load-config filename="${basedir}/fb3config.xml" />
</compc>

Это не работает с кучей ошибок вида:

[compc] Error: could not find source for resource bundle ...

Я могу сделать это с одним изменением:

<include name="locale/en_US"/>

Файл конфигурации, сгенерированный Flex Builder 3, фактически отображает его как "locale / {locale}" (обратите внимание, что $ отсутствует). Я тоже это попробовал с теми же (неудачными) результатами.

На данный момент я делаю все, что нужно, напрямую вводя en_US, так как мы не будем делать пакеты локализации в течение достаточно долгого времени, но в конечном итоге мне нужно будет заставить это работать. Кроме того, меня беспокоит, что я не могу заставить его работать так, как он ДОЛЖЕН работать!

1 Ответ

2 голосов
/ 28 апреля 2010

Я думаю, что проблема в том, что ${locale} интерпретируется ant как свойство, а не как строковый литерал для передачи в задачу compc. Я имею в виду, что ant видит ${locale} и думает, что вы хотите заменить значение свойства locale, которое (предположительно) определено в вашем файле сборки. Конечно, это совсем не то, что вы хотите, и из-за этого все ужасно ломается.

То, как я делал что-то в моих файлах сборки, - это удаление префикса $, и все, кажется, работает как положено. Итак, ваш пример будет выглядеть примерно так:

<compc output="${deploy.dir}/myfrmwrk.swc" locale="en_US">
    <source-path path-element="${basedir}/src/main/flex"/>
    <include-sources dir="${basedir}/src/main/flex" includes="*" />
    <include-libraries file="${basedir}/libs"/>
    <compiler.external-library-path dir="${FLEX_HOME}/frameworks/libs/player/9" append="true">
        <include name="playerglobal.swc"/>
    </compiler.external-library-path>
    <compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
        <include name="libs"/>
        <!-- Ditch the dollar sign and things should work! -->
        <include name="locale/{locale}"/>
    </compiler.library-path>
    <load-config filename="${basedir}/fb3config.xml" />
</compc>
...