【问题标题】:How to get `lein-repl` to use `user` instead of `main` for development purposes如何让`lein-repl`使用`user`而不是`main`进行开发
【发布时间】:2019-01-03 09:02:00
【问题描述】:

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

我怎样才能两者兼得?因为当我使用lein repl 时,我必须注释掉project.clj:main 部分才能访问开发版本。

所以我使用stuartsierra/reloaded leiningen template,它有一个很好的开发环境。

它没有 :main 键,当我添加一个时,我就停止获取我的项目的开发版本。

而不是看到

user=>

当我输入 lein repl 时,我最终会看到我的 main,它位于 jaribu 命名空间中

io.wakamau.jaribu=> ;; my main

似乎可行的解决方案是注释掉project.clj:main 部分。

(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")

结果是:

user=>

我不得不承认我对使用leiningen了解不多。

【问题讨论】:

    标签: clojure leiningen


    【解决方案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?

    【讨论】:

    • 它有帮助,谢谢。
    • 虽然我需要将:init-ns 设置为user
    猜你喜欢
    • 2014-11-28
    • 2021-09-17
    • 2012-12-31
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多