Clojure: Как запустить мою главную из банки?
У меня есть приложение Clojure, упакованное в банку. Я запускаю его как:
java -cp lib/clojure-1.2.0.jar:my-app.jar clojure.main -e "(use 'foo.main)(-main)"
Это единственный способ запустить мое приложение из этой банки? В частности, мне бы хотелось увидеть что-то простое:
java -cp lib/clojure-1.2.0.jar:my-app.jar clojure.main foo.main
Ответы
Ответ 1
Используйте
(ns foo.main
(:gen-class)
в вашем основном источнике, чтобы создать пакетный класс класса пакета пространства имен. Добавить
:main foo.main
:manifest {"Class-Path" "lib/clojure-1.2.0.jar"}
в файл проекта Leiningen. После "lein jar" вы можете запустить приложение, используя метаданные из файла манифеста, встроенного JAR:
java -jar foo-YOURVERSION.jar
Ответ 2
Если вы упаковываете свое приложение с задачей leiningens uberjar, тогда все, что вам нужно сделать, запускается,
java -jar name-of-your-app.jar