Creates, Deletes, Records and Restores Symlinks.
This task performs several related operations. In the most trivial
and default usage, it creates a link specified in the link attribute to
a resource specified in the resource attribute. The second usage of this
task is to traverse a directory structure specified by a fileset,
and write a properties file in each included directory describing the
links found in that directory. The third usage is to traverse a
directory structure specified by a fileset, looking for properties files
(also specified as included in the fileset) and recreate the links
that have been previously recorded for each directory. Finally, it can be
used to remove a symlink without deleting the associated resource.
Usage examples:
Make a link named "foo" to a resource named
"bar.foo" in subdir:
<symlink link="${dir.top}/foo" resource="${dir.top}/subdir/bar.foo"/>
Record all links in subdir and its descendants in files named
"dir.links":
<symlink action="record" linkfilename="dir.links">
<fileset dir="${dir.top}" includes="subdir/**" />
</symlink>
Recreate the links recorded in the previous example:
<symlink action="recreate">
<fileset dir="${dir.top}" includes="subdir/**/dir.links" />
</symlink>
Delete a link named "foo" to a resource named
"bar.foo" in subdir:
<symlink action="delete" link="${dir.top}/foo"/>
LIMITATIONS: Because Java has no direct support for
handling symlinks this task divines them by comparing canonical and
absolute paths. On non-unix systems this may cause false positives.
Furthermore, any operating system on which the command
ln -s link resource is not a valid command on the command line
will not be able to use action="delete", action="single"
or action="recreate", but action="record" should still
work. Finally, the lack of support for symlinks in Java means that all links
are recorded as links to the canonical resource name.
Therefore the link: link --> subdir/dir/../foo.bar will be
recorded as link=subdir/foo.bar and restored as
link --> subdir/foo.bar .
|