Подтвердить что ты не робот

Как я могу настроить leiningen для работы с несколькими проектами?

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

Пример:

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

Я хочу, чтобы все они были скомпилированы в одну JVM одновременно. Я хотел бы запустить репозиторий git reposing edge (вытащить новые коммиты/сделать свои собственные коммиты), и не нужно запускать банку lein или lein deps и, конечно же, не перезагружать VM, если я изменю любой из проектов.

Здесь используется прецедент:

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

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

Возможно ли это в leiningen? Как я могу настроить это?

4b9b3361

Ответ 1

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

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

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

Ответ 2

Если вы уже используете swank, вам не нужны зависимости для проверки lein. Вы можете просто C-c C-k ваш проект (который загрузит jarred версии noir/whatever), а затем перейдите к вашей локальной версии noir и C-c C-k, которые также. Суонк счастливо отправляет весь код вашему реплику, и jvm никогда не должен знать, что он пришел из другого места!

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