Как запустить созданный файл .clj Clojure? - PullRequest
63 голосов
/ 05 октября 2011

Я установил Geany на свой компьютер с Linux Mint и написал простой код.Просто маленький привет мир, чтобы начать работу с языком.

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

Как я могу запустить этот код?Я не использую интегрированную среду разработки или что-то предварительно упакованное, просто простой текстовый редактор Geany.

Какую команду запустить?

Ответы [ 8 ]

61 голосов
/ 30 августа 2013

С clojure

Не могу поверить, что никто еще не предложил это. Вы должны быть в состоянии просто сделать

clojure path/to/script.clj

Это работает с использованием clojure, установленного в Ubuntu с apt-get. Не уверен насчет других установок ...

С lein-exec

Однако, если скрипт, над которым вы работаете, имеет любые зависимости, я бы порекомендовал плагин lein-exec . Это дает преимущество, позволяя вам использовать Leiningen для обработки любых зависимостей, что приятно. В Leiningen уже есть команда a lein run, но она работает только для выполнения основных функций в рамках полного проекта Clojure / lein . Так что плагин lein-exec является действительно хорошим дополнением для мелкомасштабных скриптов.

Детали зависимости ...

Примечание: ради тщательности, если вы используете lein, вы можете добавить любые библиотеки, которые вы хотели бы использовать, в файл ~/.lein/profiles.clj или в файл project.clj, если вы работаете в проекте. Затем, когда вы запустите lein deps, все зависимости будут установлены и доступны в ваших скриптах / проектах при использовании lein exec / lein run. Кроме того, lein repl предоставляет вам реплик Clojure с доступом к этим зависимостям. Опять же, определенно путь, если у вас есть какие-либо библиотечные зависимости.

В любом случае, рассмотрите возможность использования drip для более быстрого запуска

Drip - это аккуратный маленький инструмент, который предоставляет вам предварительно загруженный образ JVM, готовый к запуску. Это может быть полезно для сокращения времени запуска приложений JVM. Clojure может занять довольно много времени, чтобы начать самонастройку, так что drip - хороший инструмент, помогающий ускорить этот процесс. Это особенно актуально, когда вы пишете небольшие сценарии, с которыми обычно ожидается быстрый запуск. Если вы используете leiningen, взгляните на плагин lein-drip .

Для ClojureScript

Я бы порекомендовал http://planck -repl.org / . Теперь он поддерживает (загруженный) быстрый запуск сценариев ClojureScript без необходимости запуска JVM или Clojure. Для большинства задач сценариев важно быстрое выполнение, поэтому, когда вам не нужно ничего специфического для JVM, это моя рекомендация № 1.

57 голосов
/ 05 октября 2011

Вы можете запустить скрипт с помощью следующей команды:

java -cp clojure.jar clojure.main file.clj

но лучше использовать leiningen , особенно когда вы начнете добавлять зависимости в свой проект. lein предоставляет количество команд для запуска вашего кода (со всеми необходимыми зависимостями), упаковки кода в архив с помощью lein jar или создания полных независимых архивов с lein uberjar, которые вы можете запускать с помощью:

java -jar your_app.jar

Команда

P.S. Вы можете прочитать, как использовать lein в , следуя статье - она ​​описывает основные задачи и конфигурации

12 голосов
/ 23 февраля 2015

После того, как вы установили lein и плагин lein-exec , запустить созданный вами файл .clj так же просто, как

lein exec hello.clj

На случай, если вы передадитеАргументы командной строки, такие как

lein exec hello.clj arg1 arg2 arg3

, вы можете получить к ним доступ в функции 'foo' в вашем hello.clj, например

(foo *command-line-args*) 
8 голосов
/ 05 октября 2011

Для одного файла clj, который вы можете добавить,

#!/usr/bin/env java -cp /path/to/clojure-1.2.0.jar clojure.main

в начало файла и сделайте его исполняемым, или вы можете использовать leiningen, который является инструментом сборки clojure, он создаст один jar-файл, в котором все упаковано, тогда вы можете просто сделать,

java -jar cool_app.jar
1 голос
/ 18 сентября 2016

, если вы просто хотите выполнить один файл, как насчет передачи его в реплик, например:

cat $PATH_TO_FILE | lein repl

1 голос
/ 13 января 2014

Drip , вероятно, является лучшим ответом на этот вопрос (см. Drip's wiki для получения подробной информации об использовании Drip с Clojure).

Cake был включен в Leiningen ис тех пор была заменена Drip как самая стабильная реализация автоматизации Clojure - см. ответ на аналогичный вопрос здесь.

0 голосов
/ 09 июля 2018

Для запуска одного файла через командную строку используйте следующие команды:

clj -m (NameSpace name)

ex: clj -m Sample

Или, если вы хотите запустить repl:

(load-file filelocation)

ex:

 (load-file "Sample.clj")
0 голосов
/ 02 августа 2016

У меня была похожая проблема при запуске конкретного файла сценария clojure из проекта clojure с использованием lein.Затем я нашел ярлык, подумав о совместном использовании того же.

В файле project.clj вы можете переключать имя файла сценария clojure (который, конечно, имеет основной метод).Ниже приводится заявление для этого.

:main ^:skip-aot conv.newconv ; here conv is namespace and newconv is the file name.

Примечание: Я новичок в clojure и не знаю, почему '^: skip-aot` используется, я не проверял это.

Примечание: Эта методология не требует установки какого-либо плагина или необходимости в jar-файле.быть сгенерированным.Это требует только изменения имени в файле проекта.

Предположение: В вашем проекте clojure есть несколько файлов clojure, каждый из которых имеет основной метод.Я предполагаю, что это создано только для целей тестирования.Мое решение будет работать для этого конкретного сценария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...