2014-02-27 55 views
1

我在混合Clojure/Java环境中进行编程。我使用的是Maven,我的一些依赖项是clojars.org的Clojure库。提前(AOT)编译Maven中的Clojure库

现在,我需要在Java代码之前对Clojure代码执行AOT编译,因为Java代码引用了Clojure中定义的记录。我如何使用Maven和clojure-maven插件实现这一点。

回答

0

如果命名空间是AOT编译的,它所需或使用的所有命名空间也将被编译为AOT。在Clojure中,通常会有一个顶层的Clojure命名空间,在这种情况下,AOT可以编译该命名空间。如果你从Java调用Clojure,可能有多个顶级Clojure命名空间,这是一个确定它们是什么并确保它们都是AOT编译的问题。由于Clojure不允许任何类型的递归依赖,所以名称空间是否为顶层并不是一个模糊的问题;顶层命名空间是其他Clojure命名空间不需要或使用的顶层命名空间。