一、概述
symlink是Ant内置任务,用于在基于Unix的平台上管理符号链接,可以用来创建一个单独的链接,删除一个链接,从属性文件创建多个链接,或者创建描述指定目录中的链接的属性文件。默认情况下不会覆盖已有文件,fileset用于选择一组要记录的链接,或者用于创建链接的一组属性文件。
二、属性
action:执行的操作类型,有效值为single、record、recreate、delete,默认为single。link:要创建或删除的链接名称,此属性是相对于当前工作目录而不是基本目录解析的,建议使用绝对路径或者${basedir}/some-path,当action为single或者delete时必须设置此属性。
resource:链接指向的资源,action为single时必须设置此属性。resource的相对路径是基于链接所在的目录进行解析的。建议使用绝对路径。
linkfilename:在每个子目录创建的属性文件的名字,action为record时必须设置此属性。
overwrite:是否覆盖已有linkfilename链接文件,默认为false。
failonerror:如果为false,发生错误时,会记录一条警告信息,但不会停止构建。如果为true则停止构建,默认为true。
当action为record时,使用fileset来选择要记录的目录和链接名称。当action为recreate时,使用fileset指定要处理的属性文件名称和可以找到它们的目录。
当action为record时,会在fileset的每个子目录下创建一个linkfilename指定名称的属性文件,文件中的链接指向的资源为绝对路径。
三、简单示例
<project>
<property name="linkdir" value="/root/links">
<property name="linkfilename" value="dir.links">
<symlink link="${linkdir}/a" resource="root/test/a"/>
<symlink link="${linkdir}/aa/a" resource="root/test/a"/>
<symlink action="record" linkfilename="${linkfilename}" overwrite="true">
<fileset dir="${linkdir}" includes="**/**" />
</symlink>
<symlink action="delete" link="${linkdir}/a"/>
<symlink action="delete" link="${linkdir}/aa/a"/>
<symlink action="recreate">
<fileset dir="${linkdir}" includes="**/**/${linkfilename}" />
</symlink >
</project>