Github user bodewig commented on a diff in the pull request:
https://github.com/apache/ant/pull/49#discussion_r155927463
--- Diff: src/main/org/apache/tools/ant/taskdefs/optional/unix/Symlink.java
---
@@ -207,26 +198,30 @@ public void recreate() throws BuildException {
try {
if (fileSets.isEmpty()) {
handleError(
- "File set identifying link file(s) required for action
recreate");
+ "File set identifying link file(s) required for
action recreate");
return;
}
- Properties links = loadLinks(fileSets);
-
- for (String lnk : links.stringPropertyNames()) {
- String res = links.getProperty(lnk);
- // handle the case where lnk points to a directory (bug
25181)
+ final Properties links = loadLinks(fileSets);
+ for (final String lnk : links.stringPropertyNames()) {
+ final String res = links.getProperty(lnk);
try {
- File test = new File(lnk);
- if (!SYMLINK_UTILS.isSymbolicLink(lnk)) {
- doLink(res, lnk);
- } else if (!test.getCanonicalPath().equals(
- new File(res).getCanonicalPath())) {
- SYMLINK_UTILS.deleteSymbolicLink(test, this);
- doLink(res, lnk);
- } // else lnk exists, do nothing
- } catch (IOException ioe) {
- handleError("IO exception while creating link");
+ if (Files.isSymbolicLink(Paths.get(lnk)) &&
+
Paths.get(lnk).toFile().getCanonicalPath().equals(Paths.get(res).toFile().getCanonicalPath()))
{
+ // it's already a symlink and the symlink target
is the same
+ // as the target noted in the properties file. So
there's no
+ // need to recreate it
+ continue;
+ }
+ } catch (IOException e) {
+ if (failonerror) {
+ throw new BuildException("Failed to recreate
symlink " + lnk + " to target " + res, e);
+ }
+ // log and continue
+ log("Failed to recreate symlink " + lnk + " to target
" + res, Project.MSG_INFO);
+ continue;
}
+ // create the link
+ this.doLink(res, lnk);
--- End diff --
I think this should be inside of the `try` block.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]