2010-07-20 4 views
1

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

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

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

ответ

0

Я понял, как это сделать, исходя из того, как сами муравьиные источники представляют переменные 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"/> 

Дальше вниз Я могу передать их на вызовы с помощью тегов exec. Например:

<exec executable="make" dir="${bar.dir}" failonerror="true"> 
    <env key="ORACLE_HOME" value="${env.ORACLE_HOME}" /> 
</exec> 
0

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

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

<exec executable="make" /> 

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

<exec executable="make" > 
    <env key="ENV_KEY" value="ENV_VALUE"/> 
</exec> 
Смежные вопросы