当包含在类路径任务中的文件不存在时,是否有内置的方法让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>
答案 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>