Ant 按顺序调用2个ivy文件

Ant 按顺序调用2个ivy文件,ant,ivy,ant-contrib,Ant,Ivy,Ant Contrib,我正试着一个接一个地打电话 当存在my ivy_portlet.xml时,第二个调用不会执行 当我的ivy_portlet.xml不存在时,第二个调用检索ivy.xml的内容 当这两个文件存在时,只执行第一个文件 我错过了什么 <if> <available file="${basedir}/ivy_portlet.xml" /> <then> <echo message="Getting

我正试着一个接一个地打电话

当存在my ivy_portlet.xml时,第二个调用不会执行

当我的ivy_portlet.xml不存在时,第二个调用检索ivy.xml的内容

当这两个文件存在时,只执行第一个文件

我错过了什么

    <if>
        <available file="${basedir}/ivy_portlet.xml" />
        <then>
            <echo message="Getting runtime portlet dependencies using Ivy project's configuration" />
            <ivy:retrieve pattern="${project.lib.dir}/[conf]/[artifact]-[revision](-[classifier]).[ext]" file="${basedir}/ivy_portlet.xml"/>
        </then>
    </if>
    <if>
        <available file="${basedir}/ivy.xml" />
        <then>
            <echo message="Getting deps using Ivy project's configuration" />
            <ivy:retrieve pattern="${project.lib.dir}/[conf]/[artifact]-[revision](-[classifier]).[ext]" file="${basedir}/ivy.xml"/>
        </then>
    </if>

ant代码看起来不错,我甚至在本地测试了它(没有ivy检索任务),并且执行了两个if语句。当两个文件都存在并且第一个ivy检索触发时,检索是否成功完成而没有错误或失败?可能是短路了。查看日志在这里可能会有所帮助。

以下是技巧:

当使用不同于ivy.xml的文件名时,必须调用resolve

<ivy:resolve file="${rpm.homedir}/Builder/ivy_portlet.xml"/>


在我看来,您正在尝试管理不同的依赖项组?在这种情况下,配置(在单个常春藤文件中)将以更灵活的方式解决您的问题?很高兴你让它工作了。