I am using lein2. I would like to load some ns by default when the repl starts. Is it possible to either specify in project.clj the ns that should be loaded, when lein2 repl is executed for that project?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You will find a lot of answers in the sample project
;; Options to change the way the REPL behaves
:repl-options {;; Specify the string to print when prompting for input.
;; defaults to something like (fn [ns] (str *ns* "=> "))
:prompt (fn [ns] (str "your command for <" ns ">, master? " ))
;; Specify the ns to start the REPL in (overrides :main in
;; this case only)
:init-ns foo.bar
;; This expression will run when first opening a REPL, in the
;; namespace from :init-ns or :main if specified
;; This expression will run when first opening a REPL, in the
;; namespace from :init-ns or :main if specified
:init (println "here we are in" *ns*)
Using a project.clj
I had handy:
(defproject test "1.0.0"
:repl-options { :init-ns test.core
:init (do
(use 'clojure.set)
(println (union #{1 2 3} #{3 4 5}))
(use 'incanter.core)
(println (factorial 5))) }
:dependencies [[org.clojure/clojure "1.4.0"]
[incanter/incanter-core "1.3.0-SNAPSHOT"]])
When I fire up lein repl
$ lein repl
nREPL server started on port 1121
REPL-y 0.1.0-beta10
Clojure 1.4.0
Exit: Control+D or (exit) or (quit)
Commands: (user/help)
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
(user/sourcery function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Examples from clojuredocs.org: [clojuredocs or cdoc]
(user/clojuredocs name-here)
(user/clojuredocs "ns-here" "name-here")
#{1 2 3 4 5}
120.0
test.core=>
回答2:
I sometimes use the :injections
option in project.clj
to load namespaces. The following example will load the
foo.bar
namespace when the lein2
command is executed:
(defproject org.example/sample "0.1.0-SNAPSHOT"
:description "A sample project"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:injections [(use 'foo.bar)])