特定のファイルが存在する場合にのみブロックを実行するANTタスクはありますか?特定の構成ファイルが存在する場合にのみ、特別な処理を行う必要がある汎用のantスクリプトがあるという問題があります。
これはコーディングの観点からもう少し理にかなっているかもしれません(ant-contribで利用可能: http://ant-contrib.sourceforge.net/ ):
<target name="someTarget">
<if>
<available file="abc.txt"/>
<then>
...
</then>
<else>
...
</else>
</if>
</target>
Ant 1.8.0以降、明らかにリソースが存在します
から http://ant.Apache.org/manual/Tasks/conditions.html
リソースの存在をテストします。 Ant 1.8.0以降
テストする実際のリソースは、ネストされた要素として指定されます。
例:
<resourceexists> <file file="${file}"/> </resourceexists>
私はこの質問に対する上記の良い答えから例を修正しました、そしてこれを見つけました
Ant 1.8.0以降、代わりにプロパティ拡張を使用できます。値がtrue(またはonまたはyes)の場合はアイテムが有効になり、false(またはoffまたはno)の場合はアイテムが無効になります。他の値は引き続きプロパティ名であると想定されるため、名前付きプロパティが定義されている場合にのみアイテムが有効になります。
古いスタイルと比較すると、コマンドラインまたは親スクリプトから条件をオーバーライドできるため、柔軟性が向上します。
<target name="-check-use-file" unless="file.exists"> <available property="file.exists" file="some-file"/> </target> <target name="use-file" depends="-check-use-file" if="${file.exists}"> <!-- do something requiring that file... --> </target> <target name="lots-of-stuff" depends="use-file,other-unconditional-stuff"/>
http://ant.Apache.org/manual/properties.html#if+unless のantマニュアルから
うまくいけば、この例は一部の人にとって有用です。彼らはresourceexistsを使用していませんが、おそらくあなたはできますか?.....
この同様の答えを参照する価値があると思います: https://stackoverflow.com/a/5288804/6431
別の簡単なソリューションを次に示します。 <available>
タグを使用して、これに関する他のバリエーションが可能です。
# exit with failure if no files are found
<property name="file" value="${some.path}/some.txt" />
<fail message="FILE NOT FOUND: ${file}">
<condition><not>
<available file="${file}" />
</not></condition>
</fail>
DB_*/**/*.sql
などのファイル名フィルターの使用を確認しますワイルドカードフィルターに対応する1つ以上のファイルが存在する場合にアクションを実行するバリエーションを次に示します。つまり、ファイルの正確な名前がわかりません。
ここでは、再帰的に「DB _ *」と呼ばれるサブディレクトリで「*。sql」ファイルを探しています。必要に応じてフィルターを調整できます。
注意:Apache Ant 1.7以降!
一致するファイルが存在する場合にプロパティを設定するターゲットは次のとおりです。
<target name="check_for_sql_files">
<condition property="sql_to_deploy">
<resourcecount when="greater" count="0">
<fileset dir="." includes="DB_*/**/*.sql"/>
</resourcecount>
</condition>
</target>
ファイルが存在する場合にのみ実行される「条件付き」ターゲットは次のとおりです。
<target name="do_stuff" depends="check_for_sql_files" if="sql_to_deploy">
<!-- Do stuff here -->
</target>
必要な名前と同じ名前のファイルのリストで操作を実行するように命令することにより、それを行うことができます。特別なターゲットを作成するよりもはるかに簡単で直接的です。また、追加のツールは不要で、純粋なAntだけです。
<delete>
<fileset includes="name or names of file or files you need to delete"/>
</delete>
FileSet を参照してください。