2011-01-06 3 views
1

나는 심볼릭 링크를 포함하는 디렉토리 트리를 가지고있다. (현재 디렉토리).Ant FileSet을 사용하여 심볼릭 링크를 피하는 방법은 무엇입니까?

Caught error while checking for symbolic links 
at org.apache.tools.ant.DirectoryScanner.causesIllegalSymlinkLoop(DirectoryScanner.java:1859) 

나는 스캐너를 생성하기 위해 사용하고있는 코드는 다음과 같습니다 :

FileSet files = new FileSet(); 
Project project = new Project(); 
project.setBasedir(dir); 
files.setProject(project); 
files.setDir(project.getBaseDir()); 

files.getDirectoryScanner().setFollowSymlinks(false); 

for(Iterator iter = files.iterator(); iter.hasNext();) {} 

답변

1

당신의 followsymlinks 속성을 설정할 수 있습니다 나는이 개미 파일 세트 사용을 반복 할 때, 나는 다음과 같은 오류가 발생합니다 FileSet to false as documented here.

1

'not-follow'를 잘못된 위치에 설정하고 있습니다. 아래의 파일 세트의 최상위 디렉토리를 를 스캔 할 경우에만

files.setFollowSymlinks(false); 

대신

files.getDirectoryScanner().setFollowSymlinks(false); 

가 설정됩니다 게시 된 코드는 '심볼릭 링크를 따라 할 수 없습니다'사용합니다. 최상위 디렉토리의 심볼릭 링크는 계속됩니다.

causesIllegalSymlinkLoop() 메서드에서 발생하는 IOException의 원인 (정확히 1859 줄에서 catch됩니다)이 명확하지 않습니다. 그러나 내부 디렉토리 스캐너가 아닌 파일 세트에서 follow-follow를 설정하면 메소드가 전혀 호출되지 않습니다.

+0

기호 링크를 따르지 않는 방법을 검색 한 후에 여기로 가져온 경우 여기가 아닙니다. setFollowSymlinks는 완전히 잘못된 것입니다. 심볼릭 링크를 모두 무시합니다. 내가 찾고 있던 것은 symlink가 가리키는 파일/디렉토리 세트를 포함하지 않는 방법이다. – sabujp