描述

在 Java 支持符号链接的平台上管理符号链接。可用于创建单个链接、删除链接、从属性文件创建多个链接或创建描述指定目录中链接的属性文件。默认情况下,不会覆盖现有文件。

文件集 用于选择要记录的一组链接,或选择要从中创建链接的一组属性文件。

参数

属性 描述 必需
action 要执行的操作类型,可以是 single、"recordrecreatedelete 否;默认为 single
link 要创建或删除的链接的名称。
注意:出于历史原因,此属性相对于当前工作目录解析,而不是相对于项目的 basedir。建议您始终使用绝对路径或类似于 ${basedir}/some-path 的路径作为其值。
是,对于 action=singledelete;在其他操作中被忽略
resource 链接应指向的资源。 是,对于 action=single;在其他操作中被忽略
linkfilename 要在每个包含目录中创建的属性文件的名称。 是,对于 action=record;在其他操作中被忽略
overwrite 覆盖现有文件还是不覆盖。如果将 overwrite 设置为 true,则无论现有文件是否为符号链接,都会覆盖由 link 属性指定的任何现有文件。 否;默认为 false
failonerror 如果为 true,则停止构建,记录警告消息,但如果为 false,则不会停止构建,当发生错误时。 否;默认为 true

作为嵌套元素指定的参数

fileset

action=record 时,文件集 用于选择要记录的目录和链接名称。当 action=recreate 时,它们也用于指定要处理的属性文件的名称以及可以找到它们的目录。每种情况下至少需要一个文件集。

示例

subdir 中创建一个名为 foo 的链接,指向名为 bar.foo 的资源

<symlink link="${dir.top}/foo" resource="${dir.top}/subdir/bar.foo"/>

记录 subdir 及其所有后代中的所有链接,并将它们保存在名为 dir.links 的文件中

<symlink action="record" linkfilename="dir.links">
    <fileset dir="${dir.top}" includes="subdir/**"/>
</symlink>

重新创建上一个示例中记录的链接

<symlink action="recreate">
    <fileset dir="${dir.top}" includes="subdir/**/dir.links"/>
</symlink>

删除名为 foo 的链接

<symlink action="delete" link="${dir.top}/foo"/>

Java 1.2 及更早版本:由于在早于 1.3 的 Java 版本中执行系统级命令的限制,此任务可能难以使用 ANT_HOME 中的相对路径进行操作。典型的症状是 IOException,其中 Apache Ant 找不到 /some/working/directory${ANT_HOME}/bin/antRun 或类似内容。解决方法是将您的 ANT_HOME 环境变量更改为绝对路径,这将删除上述路径中的 /some/working/directory 部分,并允许 Ant 找到正确的命令行执行脚本。

注意从 Ant 1.10.2 开始,此任务依赖于 Java 7 中通过 java.nio.file.Files API 引入的符号链接支持