Как избежать символических ссылок с помощью Ant FileSet? - PullRequest
1 голос
/ 07 января 2011

У меня есть дерево каталогов, которое содержит символическую ссылку на.(текущий каталог).Когда я пытаюсь повторить это с помощью 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(); ) {}

Ответы [ 2 ]

1 голос
/ 07 января 2011

Вы устанавливаете «не следовать» в неправильном месте. Используйте

files.setFollowSymlinks( false );

вместо

files.getDirectoryScanner().setFollowSymlinks( false );

Код, который вы разместили, будет устанавливать «не следовать символическим ссылкам» только при сканировании ниже каталога верхнего уровня набора файлов. Сим-ссылки в каталоге верхнего уровня будут по-прежнему отслеживаться.

Непонятно из того, что вы опубликовали, что именно вызывает IOException в методе causesIllegalSymlinkLoop() (это исключение фиксируется в строке 1859). Но если вы зададите not-follow для набора файлов, а не его сканера внутренней директории, метод не будет вызываться вообще.

1 голос
/ 07 января 2011

Вы можете установить followsymlinks свойство FileSet в false как , задокументированное здесь.

...