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

如何从本地另一个Leiningen项目调用Clojure函数

跨Leiningen项目调用函数的解决方案

方法一:开发阶段用Checkouts实时同步(推荐)

适合开发过程中需要频繁修改alpha项目代码,同时在beta中实时验证的场景:

  • 在beta项目根目录创建checkouts文件夹:mkdir checkouts
  • 建立指向alpha项目的软链接:
    • Linux/macOS:进入beta的checkouts目录,执行 ln -s ../../alpha .(路径根据两个项目的实际相对位置调整,本文假设二者在同一父目录下)
    • Windows:执行 mklink /J beta\checkouts\alpha alpha
  • 修改beta项目的project.clj,在:dependencies中添加alpha的依赖,坐标必须和alpha项目project.clj里的配置完全一致,示例:
    :dependencies [[org.clojure/clojure "1.11.1"]
                   [alpha "0.1.0-SNAPSHOT"]]
    
  • 在beta的src/beta/core.clj中引入并调用函数:
    (ns beta.core
      (:require [alpha.utils :as u]))
    
    (println (u/plus 2 3))
    ; 运行后输出5
    

后续修改alpha的代码,beta无需重新安装依赖就能直接生效。

方法二:打包alpha到本地仓库(适合稳定版本依赖)

如果alpha的功能已经稳定,不需要频繁修改,可采用此方式:

  • 进入alpha项目根目录,执行 lein install,该命令会把alpha的jar包安装到本地Maven仓库(默认路径为~/.m2/repository)
  • 修改beta项目的project.clj,在:dependencies中添加alpha的依赖,坐标和alpha的project.clj保持一致,示例:
    :dependencies [[org.clojure/clojure "1.11.1"]
                   [alpha "0.1.0-SNAPSHOT"]]
    
  • 在beta的src/beta/core.clj中引入调用函数,代码和方法一完全一致。

注意事项

  • beta依赖的坐标(group、name、version)必须和alpha项目project.clj中的defproject配置完全匹配,否则会出现依赖找不到的问题。
  • 如果alpha项目包含第三方依赖,Leiningen会自动处理这些传递性依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:25:38