雷恩控制台(像sbt)

时间:2015-02-03 12:40:34

标签: clojure leiningen

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

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

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

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

3 个答案:

答案 0 :(得分:1)

您可能需要查看grenchman。虽然它不是Leiningen控制台,但它至少可以重用现有的REPL会话。根据我的收集,使用方法如下:

  1. 移动不在项目中的某个地方并致电:

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

    $ grench lein <task> <options>
    
  3. 任务将在已经旋转的Leiningen JVM中运行,启动开销应该会消失。

    建立grenchman似乎很乏味,建议使用其中一个precompiled binaries他们当前not available)。

    最后,该页面还指出:

      

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

    所以,祝你好运,我猜?

答案 1 :(得分:1)

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

答案 2 :(得分:0)

一种选择是从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 arg。