2017-04-07 1 views
1

sourceDirに存在しないdestDirのファイルのみをクリーニングしたいという要件があります。 例:sourceDirにStudent.javaクラスとCollege.javaクラスがあるとします。 antタスクを初めて実行すると、Student.classとCollege.classが生成されます。 sourceDirからStudent.javaを削除し、別のクラス 'Employee.javaを追加してant-javacタスクを実行すると、destDirで生成された新しいファイル' Employee.class 'が表示されますが、古いファイル' Student.class 'Student.java'はもはやsourceDirに存在しなくても、まだそこにあります。 私の要件は、もはやソースディレクトリにないdestDirからすべてのファイルを削除することです。destDirからant-javacを使用してソースディレクトリにないファイルだけをクリーニングするには

PS:私はすでにあなたが指摘のように、私はjavacの

答えて

1

ビット珍しい実行する前に、destDirのをきれいにすることはできません、それはコンパイルする前に、私のdestDirのをきれいにするようきれいなアリが動作することを知っているが、いくつかの制限のためには、自分のアプリケーションをWRT典型的な使用例は、コンパイルする前にdestDirディレクトリをクリーンアップすることです。しかし、ソースディレクトリに存在しなくなったリソースを明示的に選択することで、特定の処理を行うこともできます。削除するリソースを選択するには、Selectorsを使用します。あなたのdestDirは、javacタスクの前に実行されている場合、適切にクリーニングする必要があります。

<delete> 
    <!-- select all classes that do not have a related source file --> 
    <fileset dir="${build.dir}" includes="**/*.class"> 
     <not> 
      <present targetdir="${src.dir}"> 
       <!-- use a regex mapper to handle inner classes --> 
       <regexpmapper from="^([^\$]*)(\$.*)?.class" to="\1.java"/> 
      </present> 
     </not> 
    </fileset> 
</delete> 
関連する問題