在过去的6个月里,我一直在从repl运行我的Clojure应用程序.
即,每当我想运行应用程序时,我加载一个clojure repl,然后输入:(load-file"src/run.clj")...然后它运行我的应用程序.
然后,clojure加载我的所有*.clj文件,编译它们并运行.
我最近转投了Lein.我想"提前编译/打包"我的代码,以便我可以使用Main方法获得一个jar,并通过"java ..."直接在命令行上运行它,而不是必须加载一个clojure/lein repl.
我很清楚我需要做一些RTFMing.但是,如果有人能指出我一个很好的教程,我将不胜感激.
谢谢!
官方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)