You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过命令行设置Leiningen的:main值而非修改文件?

当然可行!用Leiningen动态指定运行目标

完全不用每次修改project.clj里的:main值——Leiningen本身就提供了更灵活的方式,完美适配你演示时快速切换示例的需求,刚好能发挥Clojure动态特性的优势。

最直接的方法:lein run -m 指定命名空间

Leiningen的run命令支持通过-m参数直接指定要运行的命名空间,跳过project.clj里的:main配置,演示时切换起来又快又炫酷。

假设你有两个示例命名空间:

  • my.clojure.demo.example-one(包含-main入口函数)
  • my.clojure.demo.example-two(包含-main入口函数)

你只需要在命令行执行:

# 运行第一个示例
lein run -m my.clojure.demo.example-one

# 运行第二个示例,还能直接传命令行参数
lein run -m my.clojure.demo.example-two "演示参数1" "演示参数2"

这样就能直接触发对应命名空间里的-main函数,全程不用碰project.clj,完全符合动态语言的直观特性。

额外技巧:灵活调用非-main函数

如果你的示例没有统一用-main函数,还可以用lein repl展示动态执行的能力:

  1. 启动REPL:lein repl
  2. 在REPL里直接调用目标函数:
(my.clojure.demo.example-one/start-demo)
(my.clojure.demo.example-two/run-sample)

这种方式更适合临时调试或展示Clojure的交互特性,演示时能直观体现语言的动态优势。

小提示

如果用lein run -m方式,要确保目标命名空间里的入口函数名为-main,并且支持接收可变参数(比如(defn -main [& args] ...)),这样才能正确接收命令行传入的参数。

内容的提问来源于stack exchange,提问作者hawkeye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:13:23