当其他库在 clojure 中使用不同版本时,指定要使用的库版本
Specify version of library to use when other libraries use different versions in clojure
现在我正在开发一个 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"]
]
有没有办法让我指定在新库中使用旧库的版本,而不是指定所有不使用它的地方?所以与其说到处都排除,不如指定使用旧库的新库版本。像...
:dependencies[
[my-library "2.1.1"]
[their-library "2.1.3"]
[new-library "0.0.1" :use-this-lib [old-lib]]
]
Leiningen 有一个全局 :exclusions
键,您可以使用它从所有依赖项中排除并自己提供依赖项。
:dependencies[
[my-library "2.1.1"]
[their-library "2.1.3"]
[new-lib "0.0.1"]
]
:exclusions [old-lib]
另一种选择是使用 :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
现在我正在开发一个 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"]
]
有没有办法让我指定在新库中使用旧库的版本,而不是指定所有不使用它的地方?所以与其说到处都排除,不如指定使用旧库的新库版本。像...
:dependencies[
[my-library "2.1.1"]
[their-library "2.1.3"]
[new-library "0.0.1" :use-this-lib [old-lib]]
]
Leiningen 有一个全局 :exclusions
键,您可以使用它从所有依赖项中排除并自己提供依赖项。
:dependencies[
[my-library "2.1.1"]
[their-library "2.1.3"]
[new-lib "0.0.1"]
]
:exclusions [old-lib]
另一种选择是使用 :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