2012-04-10 16 views
3

私は他の誰かから継承した、大きなAntスクリプト(> 1000行)を作成しています。 ディレクトリを削除しないAntに問題があります。スクリプトのある時点では動作しますが、別の場所では動作しません。Antはエラーメッセージを表示しませんが、ディレクトリをそのまま残します。 最初にAntが削除されてから動作しません

は、私は、ディレクトリの存在を確認するために、その周りにいくつかのグルーヴィーを置く:

<groovy> 
    println("Directories in @{outFolder} are:") 
    new File("@{outFolder}").eachDir() { dir -> println dir.getName() } 
    </groovy> 
    <delete verbose="true" includeEmptyDirs="true" > 
    <dirset dir="@{outFolder}" includes="**/*" /> 
    </delete> 
    <echo>End of delete</echo> 
    <groovy> 
    println("Directories in @{outFolder} are:") 
    new File("@{outFolder}").eachDir() { dir -> println dir.getName() } 
    </groovy> 

ので、ラインが呼び出されると、彼らが働きます。次に、別のアプリが呼び出され、新しいディレクトリが作成されます。 まったく同じ行が再度呼び出されます(コピー&ペースト、はい、等しくなります)。ただし、ディレクトリは削除されません。また、エラーは発生せず、Antは実行を継続します。 Windows Server 2008 R2でAnt 1.8.1を使用しています。私は、ロックの問題を防ぐために、睡眠を追加しようとしました。ディレクトリを作成するアプリケーションはJavaアプリケーションです(Tibco appManage)。ディレクトリにはXMLファイルが含まれ、jarファイルは含まれません。私はANT_HOMEとCLASSPATHをチェックしました。問題はありません。 私は何が恋しい?

もちろん、2番目の削除では、アプリケーションによって作成されたすべてのものを削除するべきではありませんが、私はできるだけシンプルなスクリプト行を作りました。

さらに詳しい情報:削除作業ができないため、回避策としてAntの移動を使用しようとしました。これは私が見ていることです:移動は、コピー先で空のディレクトリを作成し、ソースからファイルやディレクトリを削除せず、エラーを報告しません。 ソースディレクトリ/ファイル(前に削除しようとしたもの)に問題があるようです。

別の試み:AntとGroovyの最新バージョンをダウンロードしました。同じ結果。

+0

Windows? Linux?マック? –

+0

OSを元の投稿に追加しました:Windows Server 2008 R2 –

答えて

4

あなたはdirsetを使用しています。ファイルセットを使用します。

説明: dirsetはあなたの意見ではありません。ほとんどの場合、ファイルセットを使用したいと考えています。

ディレクトリが空であるため、初めて動作しています。二度目は、そうではありません。 <dirset>にはディレクトリオブジェクト自体が含まれていますが、それらのファイルは含まれておらず、削除タスクで「includeEmptyDirs」を使用していますので、これは分かります。

このような架空のツリーで

top/ 
    sub1/ 
    file.txt 
    sub2/ (empty) 

... dirsetコレクションはトップ/トップ/ SUB1 /、およびトップ/ SUB2 /を選択するだろうが、ないトップ/ SUB1 /ファイル。 TXT。 <delete>はコレクション上で動作し、ではなく、は空でないディレクトリを削除します。したがって、上の場合は、top/sub2(空です)ではなくtop/sub1またはtop /が削除されます。これはまたあなたの<move>試みの結果をあなたに説明するはずです。これはあなたが実際に役に立つことができるケースをいくつか考えています。

filesetには、ファイルとディレクトリが含まれています。

+0

これは、初めて動作する理由は説明しませんが、2回目は動作しません。私が実際に理解していないこと:削除は機能しませんが、Antはエラーを報告しません。しかし、何もすることなく、私はあなたの提案をとにかく試みました、それは動作します!ありがとう!私はdirsetタグを理解していないと思う...ツールを持つ馬鹿... –

+0

@SanderdeJong私はそれを理解するために、より詳細な説明を追加しました。しかし、Antのマニュアルはかなり良いです。私はあなたがエラーが報告されることを前提としていると理解することができますが、ファイルセット以外の選択項目には "**/*"が含まれているので、ディレクトリを削除しようとしても " "ケース。 –

+0

詳細な説明をありがとうございます。私は "Antのマニュアルはこれについてかなり良い"と "dirsetはあなたが思うものではありません"との間に矛盾があるのを見ています。 –

関連する問題