[ОБНОВЛЕНИЕ апреля 2013]
Leiningen 2, который был официально выпущен в течение некоторого времени, включает в себя концепцию шаблонов проектов.По умолчанию Leiningen предоставляет шаблон app
, который предоставляет то, что вам нужно, из коробки.Попробуйте:
lein new app my-project
Вы увидите, что Leiningen создает знакомый шаблон проекта, но также включает в себя:
- Пространство имен по умолчанию
my-project.core
в качестве:main
запись в вашем project.clj
файле - Форма
:gen-class
в объявлении пространства имен my-project.core
- Функция по умолчанию
-main
в my-project.core
пространстве имен
Для тех, кто еще не может использовать Leiningen 2, плагин lein-newnew обеспечивает эквивалентный опыт под Leiningen 1.
[/ UPDATE]
Чтобы создать проект, который при запуске печатает «Hello World!», Вы должны сделать следующее (ревизия вашего процесса выше):
Настройка
lein new my-project
cd my-project
lein deps
Теперь у вас должна быть базовая структура и банка Clojure в папке lib
.
Напишите функцию
Теперь отредактируйте src/my_project/core.clj
с помощью выбранного редактора, добавивниже под формой (ns ...)
:
(defn -main []
(println "Hello World!"))
Эта функция находится внутри вашего пространства имен my-project.core
.Чтобы убедиться, что он запускается как ваш основной, давайте добавим параметр gen-class
в ваше определение пространства имен вверху, чтобы он теперь выглядел следующим образом в верхней части core.clj
:
(ns my-project.core
(:gen-class :main true))
Так что всевместе ваш файл core.clj
выглядит следующим образом:
(ns my-project.core
(:gen-class :main true))
(defn -main []
(println "Hello World!"))
Настройте его как основную функцию
После того, как вы отредактировали src/my_project/core.clj
, как указано выше, вы должны сказать Leiningen (инструмент сборки) где живет основная функция вашего проекта.Вот пример формы defproject
, которая делает это:
(defproject my-project "1.0.0-SNAPSHOT"
:description "My Project"
:dependencies [[org.clojure/clojure "1.2.1"]]
:main my-project.core)
Теперь функция -main
внутри my-project.core
становится точкой входа для вашей программы.
Run It
Теперь вы можете иметь два варианта запуска этого проекта:
- Использовать
lein run
в командной строке, находясь в корне вашего my-project
проекта - Создатьавтономный файл JAR, запустив
lein uberjar
.Затем вы можете запустить результирующий файл JAR, запустив java -jar my-project-1.0.0-SNAPSHOT-standalone.jar