Как настроить leiningen для работы с несколькими проектами? - PullRequest
19 голосов
/ 01 декабря 2011

У меня есть несколько отдельных проектов leiningen, которые якобы могут зависеть друг от друга.

Пример:

~/projects/mywebapp  (my own project)
~/projects/noir      (a clone of the github repo)
~/projects/clojureql (a clone of the github repo)

Я хочу, чтобы все они были скомпилированы в одну и ту же JVM одновременно. Я хотел бы запустить край git repos (получение новых коммитов / создание моих собственных коммитов) и не должен запускать lein jar или lein deps и, конечно, не должен перезапускать виртуальную машину, если я изменяю какой-либо из проектов.

Вот пример использования:

После запуска lein swank из emacs я подключаюсь к repl и компилирую файл из mywebapp (с C-c-k), для которого требуется файл из noir. Он находит версию файла в каталоге моих проектов. Позже я открываю этот файл, редактирую его и компилирую (с помощью C-c-k).

Обратите внимание, что я не запрашиваю автокомпиляцию, когда выполняю git pull. Я просто не хочу перезапускать JVM или делать длительные процессы компиляции jar.

Возможно ли это в Лейнингене? Как мне это настроить?

Ответы [ 2 ]

17 голосов
/ 01 декабря 2011

Помогает ли этот вопрос из Lein FAQ ?

Q : Я хочу взломать два проекта параллельно, но раздражает переключение между ними.

A : использовать функцию, называемую зависимостями извлечения. Если вы создаете каталог с именем checkouts в корне вашего проекта и символическую ссылку, некоторые другие Проект корни в нем, Leiningen позволит вам взломать их в параллельно. Это означает, что изменения в зависимости будут видны в Основной проект без необходимости проходить через весь цикл install / switch-projects / deps / restart-repl. Обратите внимание, что это не замена для перечисления проекта в: зависимости; это просто дополняет, что для более жестких циклов изменения.

3 голосов
/ 01 декабря 2011

Если вы уже используете swank, вам не нужны зависимости для проверки lein.Вы можете просто Cc Ck вашего проекта (который будет загружать jarred версии noir / что угодно), а затем перейти к вашей локальной версии noir и Cc Ck, а также.Swank с радостью отправляет весь код в ваш репл, и jvm никогда не нужно знать, что он пришел из другого места!

Хотя я могу рекомендовать это только для небольших изменений, потому что я думаю, что если вы скомпилируете noir.coreкоторый зависит, скажем, от noir.internal, clojure загрузит jarred-версию noir.internal, даже когда вы компилируете локальную версию noir.core.Тем не менее, это удобный трюк в целом.

...