【问题标题】:Overriding Environment Variables in an Ant Script在 Ant 脚本中覆盖环境变量
【发布时间】:2011-09-28 15:54:04
【问题描述】:

我有一个问题,我的自动构建环境需要与实际运行的委托脚本不同版本的 ant 来生成构建。

我没有 ANT_HOME 的环境变量。 我将我的 CI 环境 ANT_HOME 扔到了 ant-1.7.0 的目录中 但是我需要将 ANT_HOME 覆盖或取消设置为 ant-1.6.5 的目录,这样我调用的目标就不会继承 ANT_HOME,并且会用完 1.7.0 文件夹。

谁能想到一个好方法来做到这一点?我无法修改构建脚本的委托目标,但我可以在前端修改任何内容。

我正在使用 Cruisecontrol2.8.4 和前面提到的 ant 版本。

编辑:我调用的构建目标将它们自己的 ANT_HOME 设置为 1.6.5 文件夹,但它被忽略,因为之前设置的调用 Cruisecontrol 的 ANT_HOME 是不可变的

【问题讨论】:

    标签: ant build cruisecontrol


    【解决方案1】:

    您可以使用 AntContrib 取消设置属性。

    在你的 ant 脚本中...

    导入 AntContrib:

    <taskdef resource="net/sf/antcontrib/antlib.xml">
        <classpath>
            <pathelement location="folderwithantcontribjar/ant-contrib-1.0b3.jar"/>
        </classpath>
    </taskdef>
    

    取消设置:

    <var name="ANT_HOME" unset="true"/>
    

    这会将 ANT_HOME 从当前的属性集中移除,允许再次设置它。

    【讨论】:

    • 哦,哇,这正是我需要的。我们一直在将 antContrib 用于其他任务,我什至没有想过看看那个包中是否存在这样的东西。谢谢。
    【解决方案2】:

    尝试在您的 Cruisecontrol 配置文件中设置 ant builder 的 anthome 属性:

    http://cruisecontrol.sourceforge.net/main/configxml.html#ant

    这应该调用你的 ant 版本,并且大概所有被调用的 ant 脚本也会使用这个版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      • 2013-09-02
      • 2023-03-05
      相关资源
      最近更新 更多