【问题标题】:How to run library's `main` with Leiningen?如何用 Leiningen 运行图书馆的`main`?
【发布时间】:2021-11-04 20:34:38
【问题描述】:

我使用了一些库,假设它是 Clojure 本身(总是添加到 project.clj)。 Clojure 提供了clj CLI 工具(即src/cli/clojure/main.clj,但没关系)。如何与lein 一起使用?我的意思是,是否有任何命令/插件/技术可以让我使用库的main

【问题讨论】:

    标签: clojure leiningen


    【解决方案1】:

    在 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 肯定不在我的项目中。
    • 你知道,我测试过,一定是犯了一个错误!固定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 2016-02-05
    • 2010-12-30
    • 1970-01-01
    • 2012-01-27
    • 2022-07-20
    • 1970-01-01
    相关资源
    最近更新 更多