如何使用Ant FileSet避免符号链接?

时间:2011-01-06 21:30:01

标签: ant symlink fileset

我有一个包含符号链接的目录树。 (当前目录)。当我尝试使用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 个答案:

答案 0 :(得分:1)

您可以将followsymlinks的{​​{1}}属性设置为FileSet documented here.

答案 1 :(得分:1)

你在错误的地方设置'not-follow'。使用

files.setFollowSymlinks( false );

而不是

files.getDirectoryScanner().setFollowSymlinks( false );

只有在扫描文件集的顶级目录时,您发布的代码才会设置'not-follow symlinks'。仍将遵循顶级目录中的符号链接。

您已经准确地发布了什么导致在causesIllegalSymlinkLoop()方法中引发IOException(该异常在第1859行被捕获),这一点尚不清楚。 但是如果您设置not-follow文件集而不是内部目录扫描程序,则根本不会调用该方法。