Clojure/Lein /包入Jar

2 java clojure leiningen

在过去的6个月里,我一直在从repl运行我的Clojure应用程序.

即,每当我想运行应用程序时,我加载一个clojure repl,然后输入:(load-file"src/run.clj")...然后它运行我的应用程序.

然后,clojure加载我的所有*.clj文件,编译它们并运行.

我最近转投了Lein.我想"提前编译/打包"我的代码,以便我可以使用Main方法获得一个jar,并通过"java ..."直接在命令行上运行它,而不是必须加载一个clojure/lein repl.

我很清楚我需要做一些RTFMing.但是,如果有人能指出我一个很好的教程,我将不胜感激.

谢谢!

poo*_*a72 5

官方lein教程中还有一个很好的教程.我只是包含这些信息,万一我们将来会遇到任何死链接.

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

(defproject yourproject "0.1"
   :dependencies [[org.clojure/clojure "1.4.0"]]
   :main yourproject.core)
Run Code Online (Sandbox Code Playgroud)

2)在您指定的主命名空间中,您必须添加(:gen-class),您必须使用指定主要功能(defn -main ...)

(ns yourproject.core
  (:gen-class))

(defn -main [& args]
  (println "This is your crazy project!"))
Run Code Online (Sandbox Code Playgroud)

3)运行uberjar创建独立jar

lein uberjar
Run Code Online (Sandbox Code Playgroud)

4)运行你的程序 java -jar

java -jar yourproject.jar
Run Code Online (Sandbox Code Playgroud)