2017-04-07 21 views
1

我有一個要求,我只需要清理那些不再存在於sourceDir中的文件。 例如:假設我在我的sourceDir中有一個類:Student.java和College.java。第一次運行ant任務會生成Student.class和College.class。 現在,如果我從sourceDir中刪除Student.java並添加另一個類'Employee.java並運行ant-javac任務,我會在destDir中看到一個新文件'Employee.class',但是舊文件ie'Student.class '儘管'Student.java'不再存在於sourceDir中,但它仍然存在。 我的要求是刪除destDir中不再在源代碼目錄中的所有文件。如何僅使用ant-javac清除那些不再位於我的源代碼目錄中的destDir文件

PS:我已經知道,螞蟻乾淨會工作,因爲它會在編譯之前清理我的DESTDIR,但由於一些限制WRT我的應用程序,就像你指出我不能在運行javac的

回答

1

位不同尋常的前清理DESTDIR ,典型的用例是清理destDir目錄berfore編譯...但是,您可以通過明確選擇不再存在於sources目錄中的資源來做一些特定的清理工作。您可以使用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> 
相關問題