Ant игнорирует попытку переопределить переменную среды LANG - PullRequest
2 голосов
/ 20 мая 2010

Нам нужно протестировать сборку Java с разными языками. Я могу вручную (т.е. через export LANG=en_DK.UTF-8 и export LANG=en_DK) проверить, что модульные тесты, выполняемые с помощью скрипта сборки ant, ведут себя по-разному, но мне нужно установить переменную среды из ant. Я попытался установить его, используя эти методы (с оболочкой $LANG, установленной на en_DK.UTF-8):

  1. с использованием -D в командной строке: ant -DLANG=en_DK
  2. с использованием файла build.properties со строкой LANG=en_DK в нем
  3. с использованием следующих операторов в файле build.xml (извините за форматирование, я не могу заставить SO отображать его иначе):

<property environment="ANTENV"/>
<property name="ANTENV.LANG" value="en_DK"/>

Используя любую из трех возможностей и при запуске с -debug, ant сообщает, что:

Override ignored for property "LANG"

Что я могу сделать, чтобы установить переменную окружения LANG внутри муравья?

Ответы [ 2 ]

1 голос
/ 20 мая 2010

ANT Свойства неизменны ,

<property name="ANTENV.LANG" value="en_DK"/>

может интерпретироваться ant как попытка переопределить уже существующее значение LANG при сохранении всех переменных среды в ANTENV<property environment="ANTENV"/>).

Так что вам нужно сохранить это значение в отдельном свойстве.

<property name="MY.LANG" value="${env.LANG}" />
0 голосов
/ 20 мая 2010

Предполагая, что ваш "тест сборки Java" выполняется с помощью вызова <java>, вы можете использовать флаг-вилку и передать свойства вновь созданному процессу. Вот пример из документации Ant :

  <java classname="test.Main"
        fork="yes" >
    <sysproperty key="DEBUG" value="true"/>
    <arg value="-h"/>
    <jvmarg value="-Xrunhprof:cpu=samples,file=log.txt,depth=3"/>
  </java>
...