我有一个使用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