如何在项目目录之外更改Lein的Clojure默认版本?

时间:2018-01-28 02:37:15

标签: clojure leiningen

这是与How to change Clojure or Lein's Clojure default version?

相同的问题寻求帮助

但不是该问题的回答。我应该在那个帖子下写下它作为答案吗?

指定在项目目录之外发出“(lein repl)”命令时要使用的Clojure版本似乎是一件很自然的事情。当然,不允许它可能有很好的设计原因,但您认为如下所示的错误消息

当Leiningen检测到〜/ .lein / profiles.clj(或其他相关的配置文件)指定与硬编码到Leiningen的不同Clojure版本时显示

会是一个好主意吗?

"specifying the Clojure version to be used with certain software, such as tools.nrepl and clojure-complete, is only allowed when this command is issued within a project directory"

很多人显然花了很多时间在Stack Overflow上试图找出如何做到这一点。

参考文献:

  1. “将〜/ .lein / profiles.clj更新为{:repl {:dependencies [^:displace [org.clojure / clojure”1.9.0“]]}}似乎不起作用。 - Petrus Theron Jan 10 Jan 10 2018 at 9:05“How do you change Clojure version in Leiningen and LightTable?

  2. “我刚刚询问了IRC的技术问题。他说:”REPL的外部项目被硬编码为lein的版本的clojure“。 - David J. 2014年2月24日19:52”How to change Clojure or Lein's Clojure default version?

  3. “这个^:displace技巧不适用于tools.nrepl或clojure-complete。” https://github.com/technomancy/leiningen/blob/master/doc/PROFILES.md

  4. How to upgrade nrepl version of leiningen?

1 个答案:

答案 0 :(得分:1)

我认为您可能会尝试在project.clj中声明不同的个人资料,其中每个资料都有自己的Clojure版本。例如:

  :profiles
  {;; :default [:base :system :user :provided :dev]
   :server-jvm {:jvm-opts ^:replace ["-server"]}
   :1.5  {:dependencies [[org.clojure/clojure "1.5.1"]]}
   :1.6  {:dependencies [[org.clojure/clojure "1.6.0"]]}
   :1.7  {:dependencies [[org.clojure/clojure "1.7.0"]]}
   :1.8  {:dependencies [[org.clojure/clojure "1.8.0"]]}
   :1.9  {:dependencies [[org.clojure/clojure "1.9.0"]]}}

现在,在运行任何Lein命令时,请按如下所示指定配置文件:

lein with-profile 1.7 repl

Clojure 1.7的REPL会议应该开始。

我从carmine sources抓起了那个片段。官方Lein个人资料手册也有the same example