Во-первых, необходимо установить leiningen2. Заходим на leiningen.org, читаем инструкции.
Качаем lein.bat куда-нибудь, например, в q:\programs\lein. Затем необходимо прописать этот путь в переменную %PATH% таким образом, чтобы lein.bat был доступен отовсюду.
Откройте cmd.exe и выполните команду lein self-install. Leiningen скачает и самостоятельно установит свою последнюю версию.
Домашний каталог утилиты lein -- C:\users\<user>\.lein, где <user> -- имя вашего пользователя. В домашнем каталоге lein находятся файлы настройки. Создайте там файл profiles.clj с таким содержимым:
{:user {:plugins [[lein-pprint "1.1.1"]
[lein2-eclipse "2.0.0"]
[lein-idea "1.0.1"]]
:dependencies [[slamhound "1.3.1"]]}}
Здесь перечислино несколько плагинов для интеграции с IDE Eclipse и IntelliJ IDEA.
Мы в любом случае будем использовать lein для того, чтобы создавать проекты и управлять зависимостями. На данный момент lein делает это гораздо лучше IDE.
Чтобы создать новый проект, выполните команду lein new myclojure1, где myclojure1 -- имя нового проекта.
Зайдите в каталог myclojure1 и выполните там команду lein deps. Leiningen подятянет все зависимости (в том числе и саму Clojure).
Сконвертируйте полученный проект в IDEA-project командой lein idea.
Далее, необходимо импортировать этот проект в IntelliJ IDEA. Чтобы IDEA могла работать с Clojure -- установите плагин LaClojure. Затем импортните проект myclojure1 (не забудьте настроить JDK для этого проеката, если не настроили для всей IDEA).
Запустить REPL можно выбрав пункт меню Tool -> Start Clojure Console.
Скомпилировать исходник на Clojure можно выбрав его в дереве проекта (src\myclojure1\core.clj), и выбрав пункт меню Tools -> Clojure REPL -> Load file in REPL.
Для того, чтобы перейти в неймспейс этого файла, обратите внимание на первую строчку core.clj:
(ns myclojure1.core)
Введите в REPL следующий текст:
(in-ns 'myclojure1.core)
После выполнения этой команды, все определения, доступные в core.clj станут доступны и в REPL.
Успехов!
Качаем lein.bat куда-нибудь, например, в q:\programs\lein. Затем необходимо прописать этот путь в переменную %PATH% таким образом, чтобы lein.bat был доступен отовсюду.
Откройте cmd.exe и выполните команду lein self-install. Leiningen скачает и самостоятельно установит свою последнюю версию.
Домашний каталог утилиты lein -- C:\users\<user>\.lein, где <user> -- имя вашего пользователя. В домашнем каталоге lein находятся файлы настройки. Создайте там файл profiles.clj с таким содержимым:
{:user {:plugins [[lein-pprint "1.1.1"]
[lein2-eclipse "2.0.0"]
[lein-idea "1.0.1"]]
:dependencies [[slamhound "1.3.1"]]}}
Здесь перечислино несколько плагинов для интеграции с IDE Eclipse и IntelliJ IDEA.
Мы в любом случае будем использовать lein для того, чтобы создавать проекты и управлять зависимостями. На данный момент lein делает это гораздо лучше IDE.
Чтобы создать новый проект, выполните команду lein new myclojure1, где myclojure1 -- имя нового проекта.
Зайдите в каталог myclojure1 и выполните там команду lein deps. Leiningen подятянет все зависимости (в том числе и саму Clojure).
Сконвертируйте полученный проект в IDEA-project командой lein idea.
Далее, необходимо импортировать этот проект в IntelliJ IDEA. Чтобы IDEA могла работать с Clojure -- установите плагин LaClojure. Затем импортните проект myclojure1 (не забудьте настроить JDK для этого проеката, если не настроили для всей IDEA).
Запустить REPL можно выбрав пункт меню Tool -> Start Clojure Console.
Скомпилировать исходник на Clojure можно выбрав его в дереве проекта (src\myclojure1\core.clj), и выбрав пункт меню Tools -> Clojure REPL -> Load file in REPL.
Для того, чтобы перейти в неймспейс этого файла, обратите внимание на первую строчку core.clj:
(ns myclojure1.core)
Введите в REPL следующий текст:
(in-ns 'myclojure1.core)
После выполнения этой команды, все определения, доступные в core.clj станут доступны и в REPL.
Успехов!
Вопрос: если проект состоит из java и clojure (например как https://github.com/nathanmarz/storm), можно ли настроить идею так что на вызове Build -> "Make project", clojurные сорцы тоже компилялись?
ОтветитьУдалитьПока что не придумал ничего умнее, чем компилять отдельный clj скрипт, с наибольшим числом зависимостей, перед тем как вызывать сборку модуля.
А что же emacs?
ОтветитьУдалитьНа emacs'е свет клином не сошёлся:) Надо отметить, что управлления окнами/воркспейсами в емаксе нет, и это огорчает.
УдалитьПро недостатки emacs я в курсе. Интересно, из-за каких конкретных недостатков отказался Дмитрий.
УдалитьДрузья, этот пост был для студентов БГУ, где я сейчас читаю лекции по ФП и Clojure. Они хотят IntelliJ IDEA, но при этом не осилили запуск из неё программ на Clojure. И еще у них там у всех Windows, представляете? Вот и пришлось дать подробное руководство.
ОтветитьУдалитьЯ не отказывался от Emacs, для меня это до сих пор наиболее удобный редактор; в нем пишу все, кроме Java-кода. Я попытался им объяснить, что Emacs важен из-за простоты программирования. Но они не воспринимают пока что.
Я им показывал на сравнение две программы: java-версию поиска по файловой системе и clojure-версию (в три раза короче). Преподаватель, которая там сидела и тоже слушала, сказала, что их не испугать таким жава-кодом. Т.е. приходится объяснять даже такие очевидные вещи, что чем меньше кода, тем проще и быстрее его написать... Не думаю, что мне удастся объяснить им преимущества Emacs...
> Я попытался им объяснить, что Emacs важен из-за простоты программирования.
УдалитьТолько вы забываете, что зачастую на нормальное освоение Emacs (запоминание хоткеев, отвыкание от использования только оконных интерфейсов) у людей уйдёт слишком много времени, если ограничиваться рамками одного семестра. Что может быть критично, т.к. они потеряют много времени на это и не смогут сконцентрироваться на освоении содержательной части курса.
Так что, имхо, IDEA тут однозначно лучшее решение.
Да я на Emacs и не настаивал, поэтому и написал пост с инструкциями по настройке IDEA. Другое дело, что они по крайней мере должны знать о существовании более простых и удобных инструментов.
Удалитьв emacs через nrepl(замена slime swank) можно редактировать код в работающей jvm как бы, тут есть такая возможность ?
ОтветитьУдалитьДа, там примерно такой же REPL. Кстати, недавно nrepl переименовали в CIDER.
ОтветитьУдалитьновый плугин к идее https://github.com/cursiveclojure/cursive
ОтветитьУдалить