2012-04-10 2 views
3

나는 (더 이상 사용할 수없는) 다른 누군가로부터 물려받은 큰 Ant 스크립트 (> 1000 줄)를 만들고있다. 디렉토리를 삭제하지 않는 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를 확인했다. 거기에는 문제가 없다. 무엇이 놓칠까요?

스마트 엉덩이의 경우 : 물론 두 번째 삭제는 앱에 의해 생성 된 모든 것을 삭제해서는 안되지만 가능한 한 간단하게 스크립트 줄을 만들었습니다.

몇 가지 추가 정보 : 삭제 작업을 수행 할 수 없으므로 앤트 이동을 해결 방법으로 사용하려고했습니다. 이것은 내가 보는 것입니다. 이동은 대상에 빈 디렉토리를 만들고 소스에서 파일이나 디렉토리를 제거하지 않으며 오류를보고하지 않습니다. 소스 디렉토리/파일에 문제가있는 것처럼 보입니다 (이전에 삭제하려고 시도한 파일).

또 다른 시도 : Ant 및 Groovy의 최신 버전을 다운로드했습니다. 같은 결과.

+0

Windows? 리눅스? 맥? –

+0

OS를 원래 게시물에 추가하기 만하면 : Windows Server 2008 R2 –

답변

4

당신은 dirset을 사용하고 있습니다. 파일 세트를 사용하십시오.

설명 : dirset은 귀하가 생각하는 것과 다릅니다. 거의 항상 파일 세트를 사용하려고합니다.

처음으로 디렉토리가 비어 있기 때문에 처음으로 작동합니다. 두 번째로, 그들은 그렇지 않습니다. 나는 <dirset>에 디렉토리 객체 자체를 포함하지만 그 안에있는 파일이 없기 때문에 삭제 작업에 "includeEmptyDirs"를 사용하고 있기 때문에 이것을 말할 수 있습니다. 이는 dirset에 아무런 의미가 없습니다.

이 같은 가상의 트리에서

:

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

... dirset 수집이 최고/최고/SUB1/및 최고/SUB2 /를 선택,하지만 하지 상단/SUB1/파일. txt. <delete>은 컬렉션에서 작동하며 이 아닌은 비어 있지 않은 디렉토리를 삭제합니다. 따라서 위의 경우 top/sub2 (비어 있음)는 삭제하지만 top/sub1 또는 top /은 삭제하지 않습니다. 또한 <move> 시도의 결과를 설명해야하며, 실제로 dirset을 유용하게 사용할 수있는 사례에 대해 알 수 있습니다.

fileset에는 파일과 디렉토리가 포함됩니다.

+0

그 이유는 처음에는 작동하지만 두 번째는 작동하지 않습니다. 내가 정말로 이해하지 못하는 것은 삭제가 작동하지 않지만 Ant는 오류를보고하지 않는다는 것입니다.그러나 느슨하게 할 것이 아무것도없이, 나는 당신의 제안을 어떻게해서든지 시도했다. 그리고 그것은 일한다! 감사! 나는 dirset 태그를 이해하지 못한다고 생각합니다 ... 도구가있는 바보 ... –

+0

@SanderdeJong 나는 그것을 이해하는 데 도움이되는 더 자세한 설명을 추가했습니다. Ant 매뉴얼은 이것에 대해서 꽤 좋다. 오류가보고된다고 가정하고 이해할 수 있지만 파일 세트 이외의 선택 항목에는 "**/*"가 포함되어 있기 때문에 디렉토리를 삭제하지 못했음을 알리는 많은 오류가 여전히 "정상" "사건. –

+0

자세한 설명을 주셔서 감사합니다. "앤트 매뉴얼은 이것에 대해 꽤 좋다"와 "dirset은 당신이 생각하는 것과 다르다"사이의 모순을 보았지만. –

관련 문제