35、Clojure与Java及JVM的深度融合与应用

Clojure与Java及JVM的深度融合应用

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值