如何用 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`?的主要内容,如果未能解决你的问题,请参考以下文章

如何用js表示图书借阅的到期时间

如何用java连接数据库做图书管理系统

如何用图书馆(地图)和ggplot绘制R中的东非(肯尼亚,乌干达和坦桑尼亚)地图?

安装 Leiningen 以与 Clojure 一起使用

用leiningen来运行和打包clojure项目

Leiningen 不会从 uberjar 中排除命名空间