如果类路径任务中的包含文件不存在,如何让Ant抛出错误?

时间:2013-02-04 21:20:01

标签: ant

当包含在类路径任务中的文件不存在时,是否有内置的方法让Ant抛出错误?我的目标是在调用编译目标但是不存在所需的库时,Ant会抛出构建错误。

以下是build.xml文件中包含依赖库的示例,但是当其中一个库不存在时,它不会引发错误。

<target name="compile" description="Compiles the Java code" depends="init">
    <mkdir dir ="${build}/${module-package}" />
    <javac srcdir="${src}/main/${module-package}" 
           destdir="${build}" 
           includeantruntime="off"
           debug="true" 
           fork="true">

        <classpath>
            <fileset dir="${lib}" >
                <include name="joda-time/joda-time-2.1.jar" />
                <include name="jackson/jackson-core-lgpl-1.9.7.jar"/>
                <include name="jackson/jackson-mapper-lgpl-1.9.7.jar"/>
            </fileset>
        </classpath>
    </javac>
</target>  

1 个答案:

答案 0 :(得分:1)

您可以使用ANT中的available任务来检查您知道应该存在的类的存在(由jar提供)。

<path id="compile.path">
    <fileset dir="${lib}" >
        <include name="joda-time/joda-time-2.1.jar" />
        <include name="jackson/jackson-core-lgpl-1.9.7.jar"/>
        <include name="jackson/jackson-mapper-lgpl-1.9.7.jar"/>
    </fileset>
</path>

<available classname="org.joda.time.DateTime" property="joda.present" classpathref="compile.path"/>
<available classname="org.codehaus.jackson.JsonFactory" property="jackson.present" classpathref="compile.path"/>

<target name="compile" description="Compiles the Java code" depends="init">
    <mkdir dir ="${build}/${module-package}" />

    <fail message="Joda time missing" unless="joda.present"/>
    <fail message="Jackson missing"   unless="jackson.present"/>

    <javac srcdir="${src}/main/${module-package}" 
           destdir="${build}" 
           includeantruntime="off"
           debug="true" 
           fork="true"
           classpathref="compile.path"
           />
</target>