我有一個使用lein run
可以正常工作的項目。現在我想用lein uberjar
將它編譯成獨立的jar。但是,我的src/projectname/
目錄中有幾個源文件,例如, playground.clj
和stats.clj
,我用它來試驗emacs & repl,但是我不想爲最終的項目編譯。從列寧寧編譯中排除某些clj命名空間
像make
這樣的東西,我會指定所有應該編譯的文件。用clojure/leiningen,似乎所有文件都是默認編譯的 - 如何排除文件?我沒有在Leiningen文檔中找到任何內容。我正在使用:aot :all
。這是改變一些東西的地方嗎?再一次,我找不到關於此的詳細文檔。
UPDATE:
的建議,至今都沒有奏效。但是,有效的是,包括所有需要的名稱空間,而不是排除不應編譯的名稱空間。例如:
(defproject myproject "version"
;; ...
:profiles {:uberjar {:aot [myproject.data
myproject.db
myproject.util]}})
沒有爲我工作。這與它有什麼關係? - >從相同的源文件:「^:skip-aot將不會禁用AOT編譯:main時:aot是:all或包含主類。」即那麼我需要將所有文件都包含在內? – pholz 2014-12-02 10:35:09
這是正確的。你可以將代碼從主ns移到另一個,並在命名空間中添加'^:skip-aot' – runexec 2014-12-02 12:28:28
那麼,我的主ns被稱爲'myproject.core'。我在'myproject.stats'的'ns'指令中添加了'^:skip-aot',但是當我運行'lein uberjar'時,它仍然想編譯'stats'。我只能通過將'stats.clj'重命名爲'stats.bak'來解決這個問題。 – pholz 2014-12-02 13:43:12