如何用 Leiningen 运行图书馆的`main`?
Posted
技术标签:
【中文标题】如何用 Leiningen 运行图书馆的`main`?【英文标题】:How to run library's `main` with Leiningen? 【发布时间】:2021-11-04 20:34:38 【问题描述】:我使用了一些库,假设它是 Clojure 本身(总是添加到 project.clj
)。 Clojure 提供了clj
CLI 工具(即src/cli/clojure/main.clj
,但没关系)。如何与lein
一起使用?我的意思是,是否有任何命令/插件/技术可以让我使用库的main
?
【问题讨论】:
【参考方案1】:在 Clojure 眼中,每个命名空间中的每个 Var
都是平等的。从您的代码中,执行如下:
(some.awesome.lib/-main ...)
或任何指向相关Var
的完全限定符号。
更多详情,请看这个问题:
When to use a Var instead of a function?还有
查看输出
> 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 肯定不在我的项目中。
你知道,我测试过,一定是犯了一个错误!固定。以上是关于如何用 Leiningen 运行图书馆的`main`?的主要内容,如果未能解决你的问题,请参考以下文章