关于java:Clojure / Lein /打包到Jar中

Clojure / Lein / Package into Jar

在过去的6个月中,我一直在运行自己的Clojure应用。

也就是说,每当我要运行该应用程序时,我都会加载clojure repl,然后输入:
(加载文件" src / run.clj")...,它将运行我的应用。

然后,clojure加载了我所有的* .clj文件,对其进行编译并运行。

我最近切换到了Lein。 我想"提前编译/打包"我的代码,以便可以使用Main方法获得一个jar,然后通过" java ..."直接在命令行上运行它,而不必加载 Clojure / Lein代表。

对我来说很明显,我需要进行一些RTFMing。 但是,如果有人可以向我指出一个好的教程,将不胜感激。

谢谢!


官方的lein教程中还有一个不错的教程。 我只是提供这些信息,以防将来我们遇到任何死链接。

1)首先,您需要通过将:main添加到project.clj来指定主命名空间

1
2
3
(defproject yourproject"0.1"
   :dependencies [[org.clojure/clojure"1.4.0"]]
   :main yourproject.core)

2)在指定的主命名空间中,必须添加(:gen-class),并且必须使用(defn -main ...)指定主函数

1
2
3
4
5
(ns yourproject.core
  (:gen-class))

(defn -main [& args]
  (println"This is your crazy project!"))

3)运行uberjar创建独立的jar

1
lein uberjar

4)使用java -jar运行程序

1
java -jar yourproject.jar