2
與許多JVM語言一樣,可以通過多種方式打包和啓動JVM應用程序。將大量clojure和Java依賴關係放在一起的大型clojure項目,在類似生產的環境中進行部署和啓動,有哪些可行的方法?如何打包並啓動您的clojure應用程序?
與許多JVM語言一樣,可以通過多種方式打包和啓動JVM應用程序。將大量clojure和Java依賴關係放在一起的大型clojure項目,在類似生產的環境中進行部署和啓動,有哪些可行的方法?如何打包並啓動您的clojure應用程序?
隨着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
感謝編輯建議@bfabry,我編輯了自己的編輯。 – Shlomi
我們剛剛在#clojure上進行了一次相當長的談話,所以我想我最好指出:在大多數leiningen版本中指定:main會觸發AOT。這可能是一些不理想的原因,我可以想到的一個主要原因是破壞clojure.tools.namespace。所以我認爲對於大多數人來說,第二種方法可能更可取。 – bfabry
希望我的修改使其更容易訪問,而不會引入任何錯誤。 @bfabry非常感謝讓這些知識更容易獲取。 – matanster