https://bz.apache.org/bugzilla/show_bug.cgi?id=64053
Bug ID: 64053 Summary: Move Task doesn't work with symlinked directories Product: Ant Version: 1.10.6 Hardware: PC OS: Linux Status: NEW Severity: major Priority: P2 Component: Core tasks Assignee: notifications@ant.apache.org Reporter: marc.streckf...@gmail.com Target Milestone: --- Since I am not that familiar with Ant, apologies if I didn't search properly enough or by build is flawed, but I think this issue is simple. While Building the Installer for our Netbeans Platform Product, we include a copy of the Java JDK (AdoptOpenJDK 11.0.5). During the build, netbeans moves all files into a tmpdir, which works, but then moves them back again (this is because it eliminates the sub folder that way: blah/jdk to blah/tmp -> delete jdk -> blah/tmp to blah/). Anyway, the problem is that this JDK contains a folder man/ with subfolders like ja_JP.UTF-8 and additional symlinks like jp to said directory. Now the following is thrown: UNEXPECTED ERROR - The file /build/installer/nbi_all/ext/infra/build/products/jdk/build/temp/jdk/man/ja should not exist! at org.apache.tools.ant.taskdefs.Move.deleteDir(Move.java:312) Looking at the code: https://github.com/apache/ant/blob/master/src/main/org/apache/tools/ant/taskdefs/Move.java#L303 -> ja is not seen as a directory symlink, as the target (ja_JP.UTF-8) is already deleted (by the move operation, presumably) Now I didn't dig any deeper into why the symlink isn't deleted when ja is commanded to be deleted, but I've found some similar bugs which all show that symlinks might not be supported on the copy/move operations. See also: #63956, #14320 (things have changed, we have LinkOption.NOFOLLOW_LINKS, Files.isSymbolicLink(Path) and Path.toRealPath() now) Also note that I don't know why the build.xml doesn't try to fully move the folder which would be faster (less IO) and better, but it could be because you can specify multiple source directories and they then get merged together. Thanks in Advance! -- You are receiving this mail because: You are the assignee for the bug.