2

クラスパスタスクに含まれるファイルが存在しない場合にAntにエラーをスローさせる組み込みの方法はありますか? 私の目標は、コンパイル ターゲットが呼び出されたときに Ant がビルド エラーをスローすることですが、必要なライブラリが存在しません。

依存ライブラリを含む build.xml ファイルの例を次に示しますが、ライブラリの 1 つが存在しない場合でもエラーはスローされません。

<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>  
4

1 に答える 1

2

ANT で利用可能なタスクを使用して、存在する必要があることがわかっているクラスの存在を確認できます (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>  
于 2013-02-06T00:06:39.303 に答える