Ant中的条件ivysettings文件

时间:2016-05-17 21:38:47

标签: ant

我正在尝试调整Ant build.xml脚本,以便能够在我们的本地办公室网络和AWS中工作。因此,我必须使用不同的ivysettings.xml文件,具体取决于构建的位置。在这两种情况下,构建都在Jenkins开始。我的想法是注入一个房产' aws = true'从AWS开始并且没有其他财产时。我们在AWS中使用Ant 1.7.1本地版本和更新版本,但我现在无法看到哪一个版本,build.xml应该能够在两者上运行,因此1.7.1是限制。如有必要,我可以升级。

有人可以帮助我使用为此目的调整build.xml文件所需的语法吗?

<!-- Resolve dependencies -->
<target name="resolve" description="retrieve dependencies with ivy">
    <ivy:settings file="ivysettings.xml"/>
    <ivy:retrieve sync="true"/>
</target>

如果aws = true我想使用名为ivysettings_aws.xml的文件,否则使用ivysettings.xml。

谢谢。

3 个答案:

答案 0 :(得分:0)

我用ant_contrib来解决这个问题。

<!-- Resolve dependencies -->
<target name="resolve" description="retrieve dependencies with ivy">
    <if>
        <equals arg1="${aws}" arg2="true" />
        <then>
            <ivy:settings file="ivysettings_aws.xml"/>
        </then>
        <else>
            <ivy:settings file="ivysettings.xml"/>
        </else>
    </if>
    <ivy:retrieve sync="true"/>
</target>

作品。

答案 1 :(得分:0)

以下内容会更简单吗?

<property name="ivy.settings" value="ivysettings.xml"/>

<target name="resolve" description="retrieve dependencies with ivy">
    <ivy:settings file="${ivy.settings}"/>
    ..
</target>

然后指定备用设置文件,如下所示:

ant -Divy.settings=ivysettings_aws.xml ..

答案 2 :(得分:0)

你应该使用new if/unless feature introduced with Ant 1.9.1去除对antcontrib的额外依赖,这对于近10年前停止服务,latest release 1.0b3。 像:

<project 
  xmlns:if="ant:if"
  xmlns:unless="ant:unless"
>

<!-- Resolve dependencies -->
<target name="resolve" description="retrieve dependencies with ivy">
 <ivy:settings file="ivysettings_aws.xml" if:true="${aws}"/>
 <ivy:settings file="ivysettings.xml" unless:true="${aws}"/>
 <ivy:retrieve sync="true" />
</target>

</project>

或者使用Mark O&#39;提出的解决方案。 Connor,但您需要记住更改-Divy.settings=...参数以满足您的需求。