如何让`lein-repl`使用`user`代替`main`进行开发

时间:2019-01-03 09:02:00

标签: clojure leiningen

我正在尝试通过leiningen使用project.clj设置应用程序的开发版本和生产版本。

我怎么都可以?因为我必须注释掉:main的{​​{1}}部分,以便在使用project.clj时能够访问开发版本。

所以我正在使用stuartsierra/reloaded leiningen template,它具有不错的开发环境。

它没有lein repl键,而当我添加键时,就是我停止获取项目的开发版本。

而不是看到

:main

当我输入user=> 时,最终看到的是我的主文件,它位于lein repl名称空间中

jaribu

似乎可行的解决方案是注释掉io.wakamau.jaribu=> ;; my main 的{​​{1}}部分。

:main

尝试

project.clj

导致:

(defproject io.wakamau/jaribu "0.1.0-SNAPSHOT"
  :description "trying out pedestal and component"
  :url "https://github.com/kevinmungai/jaribu"
  :license {:name "TODO: Choose a license"
            :url "http://choosealicense.com/"}
  :dependencies [[org.clojure/clojure "1.10.0"]
                 [com.stuartsierra/component "0.3.2"]]
  :profiles {:dev
               {:dependencies [[org.clojure/tools.namespace 0.2.11"]
                               [com.stuartsierra/component.repl "0.2.0"]]
                :source-paths ["dev"]}
             :uberjar {:aot [io.wakamau.jaribu]}}
  :main ^{:skip-aot true} io.wakamau.jaribu
  :min-lein-version "2.0.0")

lein repl 被注释掉时:

io.wakamau.jaribu=>

结果是:

:main

我不得不承认我对使用(defproject io.wakamau/jaribu "0.1.0-SNAPSHOT" ... ;; :main ^{:skip-aot true} io.wakamau.jaribu :min-lein-version "2.0.0") 并不了解。

1 个答案:

答案 0 :(得分:1)

您可以在project.clj中指定:repl-options {:init-ns io.wakamau.jaribu=>}。您还可以在profiles.clj中为不同的环境指定常量,例如:dev {:main io.wakamau.jaribu}。另请参见How do I start the REPL in a user defined namespace?