【问题标题】:Why move task does not move symlinks?为什么移动任务不移动符号链接?
【发布时间】:2013-07-03 23:45:40
【问题描述】:

我有一个部署脚本,我将一个目录移动到另一个目录。在这个目录中,我有一个相对于父文件夹的符号链接,如下所示:

abc -> ../dir/file

dir/file 也在部署的目录中。

我使用以下 xml 行移动目录:

<move todir="${deploy.dir}">
    <fileset dir="${to.deploy}">
        <include name="**/*" />
    </fileset>
</move>

一切都被移动了,但符号链接却没有。留在${deploy.dir}。为什么?也许 Ant 不知道如何设置新的符号链接(新位置)?

你怎么能解决这个问题?删除符号链接并使用symlink 目标创建一个新符号链接?

【问题讨论】:

    标签: deployment ant move symlink


    【解决方案1】:

    符号链接是特殊文件。 Ant 并不完全有能力处理它们。 Here is the note.

    Ant 在移动、删除和递归时不支持符号链接 沿着目录树构建文件列表。意外 事情可能会发生。

    您需要一个自定义解决方案,可能使用readlink。问题How do I move a relative symbolic link? 和答案指向其他解决方案(不过与蚂蚁无关)

    【讨论】:

    • “可能发生意外的事情”对我来说对于部署脚本来说听起来不是很好。这也可能意味着,它搞砸了所有内容并删除了所有内容? :-) 但是,我发现我可以使用符号链接目标来做到这一点。我不知道为什么ant可以处理符号链接目标内的符号链接,但不能处理移动目标......
    • @tester : java 不直接支持符号链接。 ant 通过比较路径(规范和绝对路径)来解决问题。注释说这在非 unix 平台上很容易出错。
    猜你喜欢
    • 2023-03-25
    • 2012-01-21
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多