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