如果 :paths 包含指向项目外部的项目本地符号链接,TDA 会打印出类似于以下警告:
警告:已经弃用了项目外部路径的使用,请移除:资源
一般来说,提醒关于外部依赖是个好主意,如果 :paths 是例如 ["../untracked-src" "/tmp/misc"]
这样的,我很乐意看到这个警告。
但在这种情况下,我的构建会将中间结果缓存到 /tmp(作为 tmpfs 挂载以提高速度等)并通过项目本地符号链接引用它们,我没有预料到 TDA 会将这些与本地目录区分开来。
假设 deps.edn
是这样的:
{:paths ["resources"]}
然后资源是一个符号链接
resources -> /tmp/resources.FlkJvG
那么就不希望看到这个警告。
看起来路径验证器在检查路径是否为外部路径之前会遍历符号链接。也许它可以放松到在不遍历符号链接的情况下规范化路径,例如。
(in-ns 'clojure.tools.deps.alpha.util.dir)
(defn normalize
"Make normalized File in terms of the current directory context without following symlinks.
f may be either absolute or relative."
^File [^File f]
(-> (if (.isAbsolute f)
f
(jio/file *the-dir* f))
.toPath
.normalize
.toFile))
;; and modify `sub-path?' to use `normalize' instead of `canonicalize'.