Типичный способ запуска clojure программ
Я новичок в Clojure и очень смущен тем, как я должен запускать программы Clojure.
Мой первый вопрос заключается в том, является ли каждая программа Clojure пакетом Leiningen? Если я хочу написать, начинаю ли я с создания нового проекта Leiningen? Есть ли для запуска программы Clojure, похожие на Python (т.е. python pyfile.py
)
Я понимаю, что это может быть глупый вопрос, но я немного смутился об этом, и несколько книг/учебников, которые я прошел, похоже, не отвечают на этот вопрос должным образом. До сих пор, я использовал код Clojure только в REPL.
Ответы
Ответ 1
Так как вы нашли leiningen прямо, вы на правильном пути. Это не глупый вопрос, потому что ответ на него поможет другим улучшить результаты Google.
-
каждая программа clojure должна быть отдельным проектом leiningen, поэтому вы запускаете lein new project-name
для каждого из них.
-
результат построения проекта clojure совпадает с проектом Java, JAR файл, который запускается с java -jar myproject-standalone.jar
например
-
leiningen может создать оболочку-оболочку script для вас, которая создает .sh файл, который просто вызывает java -jar
-
Когда я запускаю программы clojure, которые производятся на рабочем месте, мы просто проверяем их из git, а затем вызываем lein run
в каталоге (на самом деле Дженкинс делает это).
Ответ 2
Одно замечание Артура Ульфельдта заключается в том, что lein создает для вас project.clj, и ваша основная функция (функция, в которой выполняется запуск программы). По умолчанию Leiningen создает основную функцию в файле с именем core.clj
Например:
(defproject music "1.0.0-SNAPSHOT"
:description "A workspace for my music experiments"
:dependencies [
[org.clojure/clojure "1.3.0"]
[org.clojure/math.combinatorics "0.0.1"]
]
:main music.core)
теперь мой проект можно запустить, используя:
lein run
и основная функция в music.core будет запущена.
Ответ 3
Вероятно, самым простым способом было бы использовать lein-exec
для запуска сценариев Clojure:
http://charsequence.blogspot.in/2012/04/scripting-clojure-with-leiningen-2.html
Ответ 4
Чтобы ответить на часть вопроса: "Есть ли для запуска программы Clojure, похожие на Python?"
Вы действительно можете запустить Clojure script как это (называемый hello.clj
):
(println "Hello!")
вот так:
clojure hello.clj
РЕДАКТИРОВАТЬ: Во всех системах должно работать следующее:
java -jar <path-to-clojure-jar>/clojure.jar hello.clj
В моей системе файл clojure.jar находится в /usr/share/ clojure/clojure.jar. Команда linux для запуска Clojure просто запускает команду, подобную той, что находится над крышкой.
Ответ 5
my bash clojure script:
#!/bin/sh
export CLOJURE_EXT=$HOME/.clojure
export CLOJURE_OPTS="-Xmx1g -server"
LIBS=$(ls -1 $CLOJURE_EXT/* 2> /dev/null)
export CLASSPATH=.:$CLOJURE_EXT:$CLASSPATH:"$(echo "$LIBS" | tr \\n :)"
JAVA=${CLOJURE_JAVA:-java}
OPTS=${CLOJURE_OPTS:-}
MAIN=${CLOJURE_MAIN:-clojure.main}
breakchars="(){}[],^%$#@\"\";:''|\\"
if [ $# -eq 0 ]; then
exec rlwrap --remember -c -b $breakchars \
-f $HOME/.clj_completions \
--history-filename=$HOME/.clj_history --histsize=1000000 \
$JAVA $OPTS $MAIN -i $HOME/.clojure.clj --repl
else
exec $JAVA $OPTS $MAIN "[email protected]"
fi
сохраните их в $HOME/bin/clojure, chmod + x $HOME/bin/clojure,
скопируйте clojure.jar и стороннюю библиотеку в $HOME/.clojure,
вы можете запустить clojure your_program.clj
как python pyfile.py
Ответ 6
В качестве обновления простой способ работы с программами clojure состоит в использовании leiningen
Если вы хотите запускать небольшие сценарии clojure, используйте lein-exec
Ответ 7
Создайте псевдоним в вашем файле .bashrc
или эквиваленте:
alias clojure="java -jar path/to/clojure-x.x.x.jar"
Затем вы можете запустить clojure my-file.clj
в своем терминале.