ANT
を使用して、削除する前にディレクトリが存在することを確認するにはどうすればよいですか?
私の現在のクリーンタスクの一環として、i
<target name="clean" description="clean">
<delete dir="${build}" />
<delete dir="${bin}" />
<delete dir="${dist}/myrunner.${version}.jar" />
<delete dir="${doc}" />
<delete dir="${report}" />
</target>
これはうまく機能しますが、削除するものがあると(明らかに)削除が発生します。
ANT
を使用して、ディレクトリが存在するかどうかを確認するにはどうすればよいですか?
以下のきれいできれいなソリューション:Using ant-contribs.jar
このソリューションを使用する場合は、必ず次の行を上に配置してください
<!-- For <if> statements -->
<taskdef resource="net/sf/antcontrib/antlib.xml" />
<!-- Remove distribution directories and their content for a clean build -->
<target name="clean" description="clean">
<if>
<available file="${build}" type="dir" />
<then>
<delete dir="${build}" />
</then>
</if>
</target>
この特定のケースでは、「ディレクトリが存在するかどうかを確認する方法」という質問には答えません。それはすでに答えられているからですが、クリーンタスクではfailonerror="false"
antタスクが終了しないようにします。これは、クリーンなタスクに適している必要があります。クリーンにするものが何もない場合は問題にならないからです。
<target name="clean" description="clean">
<delete dir="${build}" failonerror="false"/>
....
<delete dir="${report}" failonerror="false"/>
</target>
これは、ant-contribをインストールしたくない場合、または何らかの理由でインストールできない場合に便利です。
vanilla antでは、=のようなものを使用します
<target name="check">
<condition property="deldir">
<available file="${somedir}" type="dir"/>
</condition>
</target>
<target name="deldir" depends="check" if="deldir">
<delete dir="${somedir}"/>
<!-- .. -->
</target>
それ以外の場合= = 一連のファイルの存在をチェックしない
同様の質問
答えは次のとおりです。
<target name="delete.target.directory">
<delete includeemptydirs="true" verbose="false" if="${(directory::exists(directory))}">
<fileset basedir="${directory}">
<include name="**/*.*" />
</fileset>
</delete>
</target>
必要な名前と同じ名前のファイルのリストを削除するように命令することにより、それを行うことができます。特別なターゲットを作成するよりもはるかに簡単で直接的です。また、追加のツールは不要で、純粋なAntだけです。
<delete>
<fileset includes="name or names of file or files you need to delete"/>
</delete>