Почему ${locale} не разрешается в моей задаче Ant <compc>?
Я видел несколько примеров, например, здесь, где люди включают пакеты ресурсов локали, ссылаясь на атрибут локали в элементе. По какой-то причине это не работает для меня. Вот что у меня есть для этой задачи:
<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 ответ
Я думаю, что проблема здесь в том, что ${locale}
интерпретируется ant как свойство, а не как строковый литерал для передачи compc
задача. Я имею в виду, что муравей видит ${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>