Clojure与Java及JVM的深度融合与应用
1. Leiningen编译任务钩子添加
在Leiningen的编译任务中,若要添加钩子,可借助robert - hooke的 add - hook 函数。此函数需访问驱动函数的变量 #'leiningen.compile/compile 。钩子函数会获取占据 #'leiningen.compile/compile 变量的原始编译函数、当前项目配置以及原本会传递给该原始编译函数的所有其他参数。当 add - hook 返回后,钩子函数将完全控制编译任务的实现。
操作步骤如下:
1. 委托给原始编译函数,以进行常规的Clojure AOT编译。
2. 关联 :java - source - path 的值,让 javac 知晓Java源文件的位置。通常该值应包含在权威项目模型中,但为确保在编译项目的Clojure源文件之前 compile 不会尝试运行 javac ,可将其排除在项目模型之外。
3. 执行 lein compile ,会调用钩子函数,先进行常规的Clojure AOT编译,再使用 javac 编译位于 srcj 目录下的Java代码。
同时,在项目中组织代码时,要避免源依赖的交织。例如,在同一项目中,Java代码使用在Clojure中定义的类型,而该类型又实现了J
Clojure与Java及JVM的深度融合应用
超级会员免费看
订阅专栏 解锁全文
27

被折叠的 条评论
为什么被折叠?



