现在我正在开发一个clojure项目,其中包含已在内部编写的其他代码。通过所有这些代码,我们的一个库已经实现了几次,我知道在我的project.clj文件中,我可以指定不用像
这样的库来引入它:dependencies[
[my-library "2.1.1" :exclusions [old-lib]]
[their-library "2.1.3" :exclusions [old-lib]]
[new-library "0.0.1"]
]
我是否可以指定在新库中使用旧库的版本,而不是指定所有不使用它的地方?因此,不要说排除任何地方,只需指定使用new-library的old-lib版本。有点像...
:dependencies[
[my-library "2.1.1"]
[their-library "2.1.3"]
[new-library "0.0.1" :use-this-lib [old-lib]]
]
答案 0 :(得分:1)
Leiningen有一个全局:exclusions
密钥,您可以使用该密钥从所有依赖项中排除并自行提供依赖项。
:dependencies[
[my-library "2.1.1"]
[their-library "2.1.3"]
[new-lib "0.0.1"]
]
:exclusions [old-lib]
答案 1 :(得分:0)
另一种选择是使用 :managed-dependecies
。它将让您为 leiningen 在多个地方遇到的依赖项指定“回退”版本。将此类依赖项移至 :managed-dependencies
块,然后在没有版本的 :dependencies
块中再次指定它们。
:managed-dependencies [
[old-lib "DESIRED-VERSION"]]
:dependencies[
[old-lib]
[my-library "2.1.1"]
[their-library "2.1.3"]
[new-library "0.0.1"]]
这个页面很好地解释了这个概念。 https://cljdoc.org/d/leiningen/leiningen/2.9.5/doc/managed-dependencies-with-leiningen