Должен ли core.clj содержать функцию -main для запуска из командной строки?

При использовании Leiningen для создания проекта должен ли файл core.clj содержать функцию -main (автоматически сгенерированную при создании приложения), чтобы запустить программу с помощью команды lein run? Должны ли все функции, которые я создаю, вызываться внутри -main?


person Mahmud Adam    schedule 14.02.2016    source источник


Ответы (1)


Нет, это не обязательно должно быть в core.clj. Вы можете поместить свою функцию -main куда угодно, если вы укажете lein, где ее искать в вашем defproject в project.clj.

(defproject myproject "0.1.0-SNAPSHOT"
  :main ^:skip-aot myproject.other-name-space)

Это скажет lein загрузить myproject.other-name-space в качестве основного пространства имен, когда он загружает repl и когда он ищет класс -main. Если у вас есть класс -main в двух местах, lein будет использовать тот, который вы укажете здесь в defproject. Вам не нужно размещать весь программный код в классе -main, вы просто используете его как отправную точку.

person jmargolisvt    schedule 14.02.2016