2017-04-07 7 views
1

sourceDir에 더 이상 존재하지 않는 내 destDir의 파일 만 정리하려는 요구 사항이 있습니다. 예 : 내 sourceDir에 Student.java 및 College.java 클래스가 있다고 가정합니다. 개미 작업을 처음 실행하면 Student.class와 College.class가 생성됩니다. 이제 SourceDir에서 Student.java를 삭제하고 'Employee.java'클래스를 추가하고 ant-javac 작업을 실행하면 destDir에 'Employee.class'라는 새 파일이 생성되지만 이전 파일 인 'Student.class' '는'Student.java '가 sourceDir에 더 이상 존재하지 않더라도 여전히 존재합니다. 내 요구 사항은 더 이상 소스 디렉토리에없는 모든 파일을 destDir에서 삭제하는 것입니다.ant-javac를 사용하여 더 이상 내 소스 디렉토리에없는 destDir의 파일 만 정리하는 방법

PS : 나는 이미 지적처럼 내가 javac의

답변

1

비트 특이한 실행하기 전에 DESTDIR을 치료할 수없는,이 컴파일하기 전에 내 DESTDIR을 청소하므로 청소 개미가 작동합니다 알고 있지만, 몇 가지 제한으로 인해 나의 응용 프로그램을 WRT 전형적인 사용 사례는 컴파일하기 전에 destDir 디렉토리를 청소하는 것입니다. 그러나 소스 디렉토리에 더 이상 존재하지 않는 리소스를 명시 적으로 선택하여 일부 특정 작업을 수행 할 수도 있습니다. Selectors을 사용하여 삭제할 리소스를 선택할 수 있습니다. 다음 스 니펫을 사용하면 javac 작업 전에 destDir을 올바르게 청소해야합니다.

<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>