如何在其他构建文件目标中导入ant构建文件

时间:2014-06-09 06:29:56

标签: java xml ant

我对使用ant目标编写构建文件知之甚少。 我熟悉的问题是我想要一个构建文件,如果满足给定条件,应该导入其他ant构建文件。 如果在下面的代码中假设$ {myresult}设置为true,则应使用postgreswebtest.xml,否则应使用mysqlwebtest.xml。 所以我尝试使用以下代码实现此目的。

<?xml version="1.0" encoding="utf-8" ?>

<project name="webtest" default="build" basedir=".">
        <target name="build">
        <property name="DBTYPE" value="${arg0}" />
        <echo message="${DBTYPE}" />
        <condition property="myresult">
            <equals arg1="${DBTYPE}" arg2="postgres" />
        </condition>
        <echo message="${myresult}" />
        <if>
            <isset property="myresult"/>
            <then>
                <import file="postgreswebtest.xml" />
            </then>
            <else>
                <import file="mysqlwebtest.xml" />
            </else>
        </if>
    </target>
</project>   

但是当我执行此代码时出现以下错误。

建筑失败: webtest.xml:21:仅允许导入作为顶级任务

有人可以帮我解决问题吗

1 个答案:

答案 0 :(得分:1)

您可以使用ant ant任务,其行为就像它正在提供提供的构建文件一样。有关详细信息,请参阅:https://ant.apache.org/manual/Tasks/ant.html

使用ant,您也可以提供默认目标。

通过这种方法,它将有条件地评估并导入您的“构建”内的文件。目标

<if>
            <isset property="myresult"/>
            <then>
                <ant antfile="postgreswebtest.xml" />
            </then>
            <else>
                <ant antfile="mysqlwebtest.xml" />
            </else>
 </if>