2015-02-03 2 views
5

Есть ли встроенная функциональность или плагин, чтобы получить лейн-консоль, так что, например, можно было протестировать, не ожидая при каждом запуске JVM.Lein console (например, sbt)

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

Примечание: Я хотел бы, чтобы вызвать тест проходит сам, а не, например, путем просмотра исходных файлов. Вот почему я хотел бы иметь консоль лейн.

Уточнение: Я не ищу lein repl. Я хотел бы иметь консоль, где я мог бы запускать команды задач lein.

+0

Вы ищете 'lein repl'? – cfrick

+0

@cfrick no, lein repl начинает * clojure repl *. Мне нужна консоль, где я мог бы запускать команды задач lein. – phadej

+1

lein - программа clojure, и ее задачи могут выполняться в repl, если вы загружаете lein libs. – noisesmith

ответ

1

Возможно, вы захотите взглянуть на grenchman. Хотя это не консоль Leiningen, она, по крайней мере, позволяет повторно использовать существующий сеанс REPL. Из того, что я понимаю, использование выглядит следующим образом:

  1. Move где-то, что не находится внутри проекта и называют:

    $ lein repl :headless 
    
  2. В каталоге проекта, использование:

    $ grench lein <task> <options> 
    

Задачи будут выполняться внутри уже развернутого JVM Leiningen, и служебные служебные данные должны исчезнуть.

Строительство grenchman, кажется утомительным, хотя и рекомендуется использовать один из precompiled binaries (НО они в настоящее время not available).

И, наконец, эта страница также заявляет:

Grenchman еще очень нова и не может быть полностью надежным.

Итак, удачи, я думаю?

+0

К сожалению, кажется, что у гандиканов Grenchman ушли :(Я получаю разрешение, отклоненное для всех из них. – Ilkka

+0

О нет. Кажется, это [известная проблема] (https://github.com/technomancy/grenchman/issues/30) ... – xsc

0

Один из вариантов - запустить реплика из собственного файла jar leiningen.

$ 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 без необходимости перезапуска лейна каждый раз. Если вы также используете rlwrap или используете nrepl, он станет немного более удобным. Насколько я знаю, в этом нет удобных инструментов (хотя их легко было бы).

Если вы хотите использовать задачи из плагинов lein, они могут быть добавлены в аргумент -cp.

1

Старые версии Leiningen используется для включения lein interactive, которые вели себя так же, как функции вы просите: он открыл раковину, в которую можно ввести test и запустить его lein test из уже работает LEIN JVM, и т.д. , Я думаю, эта функция была удалена при переходе на лейн 2.0, и хотя я не знаю, почему я подозреваю, что есть веская причина. Может быть, попробуйте спросить в #leiningen на freenode?

Смежные вопросы