如果 :paths 包含一个指向项目外部的本地符号链接,TDA 会打印类似如下警告
警告:已在项目中外部使用 :paths 已过时,请删除:resources
通常,警告外部依赖是一个好主意,如果 :paths 是比如 ["../untracked-src" "/tmp/misc"]
,我很乐意看到这样的警告。
但在此情况下,我的构建正在将中间结果缓存到 /tmp 上(包括用作 tmpfs 提高速度等因素),并通过项目本地符号链接引用这些结果,而我没有期望 TDA 会区分本地目录和符号链接。
例如 deps.edn
是
{:paths ["resources"]}
并且 resources 是一个符号链接
resources -> /tmp/resources.FlkJvG
那么最好不显示此警告。
看起来:paths 验证器在检查路径是否外部之前会将符号链接遍历为规范路径。也许它可以被放宽,以在不遍历符号链接的情况下标准化路径,例如
(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'.