Может ли Ant развернуть переменные среды из файла свойств? - PullRequest
10 голосов
/ 14 июля 2010

У меня есть вопрос относительно 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. Примечание. Я знаю, как получить прямой доступ к переменным среды (как это сделано здесь). Мне нужно использовать набор сценариев Ant, которые ожидают одну коллекцию свойств в среде, которая определяет одни и те же свойства с использованием разных имен. Таким образом, мысль о «соединении» их в файле свойств.

Я использую Ant версии 1.6.5.

1 Ответ

22 голосов
/ 14 июля 2010

Вам нужно прочитать 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} еще не установлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...