Создание профиля оболочки в файле сборки ant? - PullRequest
2 голосов
/ 20 июля 2010

Я использую cruisecontrol и ant для создания некоторых устаревших исполняемых файлов, которые также зависят от профиля оболочки для правильной настройки переменных env. Есть ли способ выполнить этот профиль, используя ant в текущем процессе, чтобы вызовы make-файлов ant правильно получали переменные env?

Другое решение будет, если есть способ добавить источник профилей в файлы sub make, которые я вызываю.

Редактировать: Я думаю, я не был ясен в моем вопросе. Я знаю, какие переменные env необходимо передать для выполнения задач exec / env. Тем не менее, я не знаю, как заставить ant получить значения из профиля оболочки, который обычно поступает через: . /usr/local/profile/foo.profile

Ответы [ 2 ]

1 голос
/ 21 июля 2010

Я понял, как это сделать, основываясь на том, как муравей сам получает переменные env.

<exec executable="ksh" dir="${foo.dir}" 
      failonerror="true" output="${foo.dir}/env.properties">
    <arg value="-c" />
    <arg value=". /usr/local/profiles/profile.foo; set" />
</exec>
<property file="${foo.dir}/env.properties" prefix="env"/>

Далее я могу передать их вызовам sub make с использованием тегов exec.Например:

<exec executable="make" dir="${bar.dir}" failonerror="true">
    <env key="ORACLE_HOME" value="${env.ORACLE_HOME}" />
</exec>
0 голосов
/ 20 июля 2010

Вы не сможете выполнить make в текущем процессе.

Взгляните на задачу ant <exec>, используйте ее для выполнения сборки make.Переменные среды по-прежнему будут доступны для процесса make, фактически вы можете отключить это явным образом с помощью атрибута newenvironment.Следующий простой exec должен сохранить все переменные окружения в make:

<exec executable="make" />

Если вам нужны дополнительные переменные окружения или вы хотите сохранить их через сборку ant, вы можете использовать их в задаче exec, добавив <env>элементы вроде так:

<exec executable="make" >
    <env key="ENV_KEY" value="ENV_VALUE"/>
</exec>
...