2016-09-19 26 views

回答

4

隨着leiningen,你可以簡單地打包通過:

lein uberjar 

這將包中的所有依賴和你的代碼放到一個罐子,然後就可以通過運行:

java -jar uberjar.jar 

對於工作然而,你必須在你的project.clj中指定一個:main命名空間,這將觸發AOT,後者被認爲不適合其他原因,如being able to cleanly use clojure.tools.namespace over your project。因此,爲了避免AOT,你可以跳過你project.clj指定:main命名空間,簡單地用稍微詳細命令來運行:

java -jar uberjar.jar clojure.main -m your.main.namespace 
+2

感謝編輯建議@bfabry,我編輯了自己的編輯。 – Shlomi

+1

我們剛剛在#clojure上進行了一次相當長的談話,所以我想我最好指出:在大多數leiningen版本中指定:main會觸發AOT。這可能是一些不理想的原因,我可以想到的一個主要原因是破壞clojure.tools.namespace。所以我認爲對於大多數人來說,第二種方法可能更可取。 – bfabry

+1

希望我的修改使其更容易訪問,而不會引入任何錯誤。 @bfabry非常感謝讓這些知識更容易獲取。 – matanster

相關問題