Может ли Ant расширять переменные среды из файла свойств?
У меня есть вопрос относительно Ant и его обработки переменных окружения.
Для иллюстрации у меня есть небольшой образец.
С учетом файла сборки Ant test.xml:
<project name="myproj" default="testProps">
<property environment="env"/>
<target name="testProps">
<echo message="${env.MyEnvVar}"/>
<echo message="${MY_PROPERTY}"/>
</target>
</project>
И файл свойств test.props:
MY_PROPERTY=${env.MyEnvVar}
Теперь установите переменную окружения MyEnvVar
на некоторое значение (foo в моем случае) и запустите Ant с помощью этой командной строки:
ant -f test.xml -propertyfile test.props testProps
Выход, который я получаю:
[echo] foo
[echo] ${env.MyEnvVar}
Я хотел бы знать, есть ли способ структурировать файл входных свойств, чтобы получить
[echo] foo
[echo] foo
То есть, я хотел бы назвать переменную среды в файле свойств, которая заменяется в Ant script. Примечание. Я знаю, как напрямую обращаться к переменным среды (как это делается здесь). Что мне нужно сделать, так это использовать набор сценариев Ant, которые ожидают один набор свойств в среде, которая определяет те же свойства с использованием разных имен. Таким образом, мысль о "мостификации" их в файле свойств.
Я использую Ant версию 1.6.5.
Ответы
Ответ 1
Вам нужно прочитать файл свойств test.props
после среды - вы можете сделать это с помощью другой задачи property
, т.е. добавить
<property file="test.props" />
после существующей задачи property environment
.
В полном объеме:
<property environment="env" />
<property file="test.props" />
<target name="testProps">
<echo message="${env.MyEnvVar}"/>
<echo message="${MY_PROPERTY}"/>
</target>
Когда вы поставляете файл свойств в командной строке, он обрабатывается перед содержимым сборки, но в это время ${env.MyEnvVar}
еще не установлен.