2016-02-24 49 views
3

lein run,lein trampoline run和部署uberjar的cojure應用有什麼區別?是否有任何性能差異?lein run vs lein trampoline run vs uberjar

如果我做了一個lein run/lein trampoline run我可以ssh進入服務器並從git中取得我的更改,而無需重新啓動應用程序,uberjar也是如此。在uberjars的情況下,我需要構建和部署應用程序的每一個變化。

在此先感謝。

回答

9

他們三人默認都不會實時處理您的代碼更改。

  • lein run:執行目標或默認名稱空間的-main函數。 Lein貫穿了主要方法的完整執行過程,所以如果你的主要功能創建了一個Web服務器,那麼Leiningen過程也會一直保持。
  • 雷音蹦牀:執行 - 主要功能作爲一個單獨的進程,使主leiningen過程可以退出,因此你只有一個進程中運行
  • 雷音uberjar:創建一個單獨的jar文件,從而使任何其他用戶不需要安裝lein來運行你的代碼。 (或任何源文件)。要運行該jar,請執行java -jar myjarname.jar其中包含所有源代碼和所有依賴項。

如果您正在使用環工作,然後lein-ring有可以啓動這樣一個發展模式:

lein ring server 

這的確代碼重裝你。編輯:哪一個用於生產?

這裏假設*產*表示提供代碼的捆綁版用戶

創建具有雷音罐子uberjar,進行獨立的構建工具的最終產品通常是首選辦法。

+0

因此,鑑於上述方法,哪一個應該用於生產,爲什麼?謝謝 – Chin365

+0

哪一個應該用於生產高度取決於你擁有的環境以及你想要做什麼。但是一般的建議是:在生產系統上總是最好有一個設置,不*總是檢查文件是否被修改。這會降低性能。因此,對於生產而言,當您必須重新啓動應用才能更改正在運行的代碼時,這很好。 –