【发布时间】:2021-11-04 20:34:38
【问题描述】:
我使用了一些库,假设它是 Clojure 本身(总是添加到 project.clj)。 Clojure 提供了clj CLI 工具(即src/cli/clojure/main.clj,但没关系)。如何与lein 一起使用?我的意思是,是否有任何命令/插件/技术可以让我使用库的main?
【问题讨论】:
我使用了一些库,假设它是 Clojure 本身(总是添加到 project.clj)。 Clojure 提供了clj CLI 工具(即src/cli/clojure/main.clj,但没关系)。如何与lein 一起使用?我的意思是,是否有任何命令/插件/技术可以让我使用库的main?
【问题讨论】:
在 Clojure 眼中,每个命名空间中的每个 Var 都是平等的。从您的代码中,执行如下:
(some.awesome.lib/-main ...)
或任何指向相关Var 的完全限定符号。
更多详情,请看这个问题:
还有
查看输出
> lein help run
使用 lein,你可以输入
lein run -m my.awesome.proj/some-fn
或
lein run -m some.awesome.lib/-main
因为对于 Clojure,some.awesome.lib/-main 与任何其他函数没有什么不同(-main 上的连字符前缀只是一个约定,对 Clojure 编译器没有影响)。
您还可以设置project.clj,以便在您键入lein run 时自动调用您选择的任何函数,方法是添加:
:main some.awesome.lib/-main
【讨论】:
lein工具来执行它。
run 子命令的帮助,但我没有看到-m 选项。这正是我想要的。
lein run some.awesome.lib 应该适用于 -main in some.awesome.lib?
lein run -m clojure.main 工作正常,而且 clojure.main 肯定不在我的项目中。