代码之家  ›  专栏  ›  技术社区  ›  chotchki

在Ant构建文件中寻找shell配置文件?

  •  1
  • chotchki  · 技术社区  · 16 年前

    我正在使用CruiseControl和Ant构建一些遗留的可执行文件,这些文件还依赖于shell配置文件来正确设置env vars。有没有一种方法可以在当前进程中使用ant来执行这个概要文件,以便makefiles ant调用正确地获取env vars?

    另一个解决方案是,如果有一种方法可以将概要文件源代码添加到我调用的子生成文件中。

    编辑:我想我的问题不清楚。我知道使用exec/env任务需要传递哪些env变量。但是,我不知道如何让Ant从通常通过以下方式获得的shell概要文件中获取值: . /usr/local/profile/foo.profile

    2 回复  |  直到 16 年前
        1
  •  0
  •   krock    16 年前

    您将无法在当前进程中执行make。

    看看蚂蚁 <exec> 任务,使用此命令执行 make 建造。环境变量仍然可以用于生成过程,实际上,您可以使用 newenvironment 属性。以下简单的exec应在make中保留所有环境变量:

    <exec executable="make" />
    

    如果您需要额外的环境变量,或者希望通过Ant构建来维护它们,您可以通过添加 <env> 这样的元素:

    <exec executable="make" >
        <env key="ENV_KEY" value="ENV_VALUE"/>
    </exec>
    
        2
  •  0
  •   chotchki    16 年前

    我根据Ant自身如何源于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标记将它们传递给sub-make调用。例如:

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