在ant构建文件中获取shell配置文件?

时间:2010-07-20 13:18:27

标签: ant makefile cruisecontrol

我正在使用cruisecontrol和ant来构建一些遗留的可执行文件,这些可执行文件也依赖于shell配置文件来正确设置env vars。有没有办法在当前进程中使用ant执行此配置文件,以便makefile蚂蚁调用正确获取env vars?

另一种解决方案是,如果有办法将配置文件源添加到我正在调用的子make文件中。

编辑:我想我的问题并不清楚。我知道使用exec / env任务需要传递什么env varibles。但是,我不知道如何让ant从shell配置文件中获取值,这些值通常来自:. /usr/local/profile/foo.profile

2 个答案:

答案 0 :(得分:0)

您将无法在当前流程中执行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>

答案 1 :(得分: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标签将它们传递给子make调用。例如:

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