【问题标题】:Lein console (like sbt)Lein 控制台(如 sbt)
【发布时间】:2015-02-03 12:40:34
【问题描述】:

是否有一些内置的功能或插件可以让 lein 获得 lein 控制台,例如,无需每次等待 JVM 启动即可进行测试。

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

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

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

【问题讨论】:

  • 你在找lein repl吗?
  • @cfrick 不,lein repl 开始 clojure repl。我想要一个可以运行 lein 任务命令的控制台。
  • lein是一个clojure程序,如果你加载lein库,它的任务可以在repl中运行
  • “试着生成一个jar”refheap.com/96856
  • @noisesmith,不会说用户体验很好。我会很感激一些更方便的东西。必须有人将其打包为 lein 插件。

标签: clojure leiningen


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    1. 移动到项目之外的地方并调用:

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

      $ grench lein <task> <options>
      

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

    不过,构建 grenchman 似乎很乏味,建议使用 precompiled binaries 之一(它们目前是 not available)。

    最后,该页面还声明:

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

    那么,祝你好运吧?

    【讨论】:

    • 可悲的是,Grenchman 二进制下载似乎已经消失了 :( 我的所有权限都被拒绝了。
    • 哦,不。好像是known issue...
    【解决方案3】:

    一种选择是从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。如果您还使用rlwrapnrepl,它会变得更有用。据我所知,没有用户友好的工具可以解决这个问题(尽管很容易)。

    如果您希望使用 lein 插件中的任务,可以将这些任务添加到 -cp arg。

    【讨论】:

      猜你喜欢
      • 2012-09-24
      • 2020-01-16
      • 2018-11-11
      • 2013-05-07
      • 2012-03-29
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 2020-04-01
      相关资源
      最近更新 更多