Clojure 在leiningen中从编译中排除某些clj命名空间

Clojure 在leiningen中从编译中排除某些clj命名空间,clojure,leiningen,uberjar,Clojure,Leiningen,Uberjar,我有一个项目,使用lein run可以很好地工作。现在我想使用leinuberjar将它编译成一个独立的jar。然而,在我的src/projectname/目录中有两个源文件,它们被称为playway.clj和stats.clj,我用来试验emacs和repl,但我不想为最终的项目编译它们 使用类似于make,我将指定应该编译的所有文件。使用clojure/leiningen,似乎所有文件都是默认编译的-如何排除文件?我在莱宁根的文件里什么也没找到 我目前正在使用:aot:all。这是换衣服的地

我有一个项目,使用
lein run
可以很好地工作。现在我想使用
leinuberjar
将它编译成一个独立的jar。然而,在我的
src/projectname/
目录中有两个源文件,它们被称为
playway.clj
stats.clj
,我用来试验emacs和repl,但我不想为最终的项目编译它们

使用类似于
make
,我将指定应该编译的所有文件。使用clojure/leiningen,似乎所有文件都是默认编译的-如何排除文件?我在莱宁根的文件里什么也没找到

我目前正在使用
:aot:all
。这是换衣服的地方吗?同样,我找不到关于这个的详细文档

更新:

到目前为止,这些建议还没有奏效。然而,有效的方法是包含所有需要的名称空间,而不是排除不应编译的名称空间。例如:

(defproject myproject“版本”
;; ...
:profiles{:uberjar{:aot[myproject.data]
myproject.db
myproject.util]})
试试这个
(ns^:跳过aot我的ns)

你也可以

(ns ^{:skip-aot true} my-ns
    (require [...]))

看一看,它描述了如何使用
:jar排除
:uberjar排除
在创建jar(分别是uberjar)时排除任意路径


老问题了,但我想我找到了后面那些人的答案

我在@amalloy的答案中找到了leiningen示例项目的链接,除了使用
源路径
,而不是
:jar排除

其想法是创建两个独立的源目录,一个用于您不想传播的内容,另一个用于您所做的内容:

dev-src/<your-project>/playground.clj
dev-src/<your-project>/stats.clj
src/<your-project>/<everything-else>

这样,当您在机器上乱搞时,这些文件将在jar中,当您部署到clojar或使用uberjar编译时,它们将不会包含在jar中,也不会被编译。

对我来说不起作用。这与此有关吗?->来自同一源文件:“^:跳过aot将不会禁用:main的aot编译,当:aot为:all或包含main类时。”即,我需要将:all替换为要包含的所有文件的向量?这是正确的。您可以将代码从主ns移动到另一个主ns,并将
^:跳过aot
添加到名称空间。我的主ns称为
myproject.core
。我在
myproject.stats
中的
ns
指令中添加了
^:skip aot
,但当我运行
lein uberjar
时,它仍然希望编译
stats
。我只能通过将
stats.clj
重命名为
stats.bak
来解决这个问题。我假设您的主ns
myproject.core
依赖于
myproject.stats
中的代码。有什么原因不能定义哪些名称空间需要
:aot
,而不是使用
:all
?我当然选中了。没有这种依赖性<代码>统计数据
未在任何地方引用。尝试过的
:uberjar排除[#“*”stats.clj“#“*”playder.clj”]
,未更改任何内容
dev-src/<your-project>/playground.clj
dev-src/<your-project>/stats.clj
src/<your-project>/<everything-else>