莱因控制台(如SBT)



是否有一些内置功能或插件来获取lein控制台,例如,可以在每次等待JVM启动的情况下进行测试。

$ lein console
>>> test
...
>>> test
...
>>> jar

注意:我想自己触发测试运行,而不是例如通过监视源文件。这就是为什么我想要一个lein控制台。

澄清:我不是在寻找lein repl.我想要一个可以运行 lein 任务命令的控制台。

旧版本的 leiningen 曾经包含 lein interactive ,其行为与您要求的功能非常相似:它打开了一个 shell,您可以在其中键入 test 并让它从已经运行的 lein jvm lein test运行,等等。我认为,此功能在过渡到 lein 2.0 时被删除了,虽然我不知道为什么我怀疑有一个很好的理由。也许尝试在freenode上询问 #leiningen?

你可能想看看grenchman。虽然它不是Leiningen控制台,但它至少可以重用现有的REPL会话。据我收集,用法如下:

  1. 移动到不在项目内的位置并调用:

    $ lein repl :headless
    
  2. 在项目目录中,使用:

    $ grench lein <task> <options>
    

任务将在已经启动的Leiningen JVM中运行,启动开销应该消失。

不过,构建 grenchman 似乎很乏味,建议使用预编译的二进制文件之一(但它们目前不可用)。

最后,该页面还指出:

Grenchman仍然很新,可能并不完全可靠。

所以,祝你好运,我猜?

一种选择是从leiningen自己的 jar 文件运行 repl。

$ java -cp ~/.lein/self-installs/leiningen-2.5.0-standalone.jar clojure.main
Clojure 1.6.0
user=> (require '[leiningen.core.project :as project] '[leiningen.test :as test])
nil
user=> (def prj (project/read))
#'user/prj
user=> (test/test prj)
lein test org.noisesmith.orsos.load-test
Ran 3 tests containing 3 assertions.
0 failures, 0 errors.
nil
user=> (require '[leiningen.jar :as jar])
nil
user=> (jar/jar prj 'org.noisesmith.orsos)
Compiling org.noisesmith.orsos
Created /media/justin/806084F16084EEEA/clojure/orsos/target/orsos-0.1.0-SNAPSHOT.jar
{[:extension "jar"] "/media/justin/806084F16084EEEA/clojure/orsos/target/orsos-0.1.0-SNAPSHOT.jar"}
user=> 

作为基线,这可以运行 lein 任务,而不必每次都重新启动 lein。如果您还使用rlwrap或使用nrepl它会变得更有用。据我所知,没有用户友好的工具(尽管很容易)。

如果您希望使用lein插件中的任务,则可以将其添加到-cp参数中。

最新更新