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

如何使用lein do test, uberjar, pom命令构建可运行Clojure程序

核心问题

你现在混用了Leiningen和Maven两套独立的构建体系,这是打包失败的根本原因:

  • lein do test, uberjar, pom的执行逻辑是读取项目根目录下的project.clj配置跑测试、打uberjar,最后根据project.clj的配置生成pom.xml,不会读取你手动编写的pom.xml内容
  • 你手动在pom.xml中添加的Clojure依赖、项目元数据配置,Leiningen执行打包时完全不会识别,最终输出的jar包自然无法按预期运行
  • 如果确定要基于Maven做项目构建,那Leiningen相关的命令完全不需要使用

方案1:使用Leiningen构建(新手优先选,配置成本最低)

放弃手动维护pom.xml,在项目根目录创建project.clj作为构建配置文件,最小可用配置参考:

(defproject 你的groupid/你的artifactid "0.1.0-SNAPSHOT" ; 替换成你自己的项目标识和版本号
  :dependencies [[org.clojure/clojure "1.11.1"]]
  :main ^:skip-aot 你写程序入口的命名空间 ; 替换成实际包含-main函数的命名空间名
  :profiles {:uberjar {:aot :all}})

配置完成后注意两个必填项:

  • 作为入口的命名空间头部必须加(:gen-class)声明
  • 入口命名空间中必须定义-main函数作为程序执行入口

之后直接执行lein uberjar即可完成测试、打包流程,输出的standalone jar包会存放在target目录下,直接用java -jar target/{artifactid}-{version}-standalone.jar命令就能运行。


方案2:必须使用Maven构建的配置方式

完全弃用Leiningen相关命令,通过maven-shade-plugin打包可执行fat jar,在你现有的pom.xml的<build>节点下添加如下插件配置:

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.5.1</version>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
        <configuration>
          <transformers>
            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
              <manifestEntries>
                <Main-Class>你的入口命名空间</Main-Class> <!-- 替换成实际的入口命名空间 -->
              </manifestEntries>
            </transformer>
          </transformers>
        </configuration>
      </execution>
    </executions>
  </plugin>
</plugins>

配置完成后执行mvn package即可完成打包,输出的jar包存放在target目录,可直接通过java -jar命令运行。


本地开发适配

你当前使用的IntelliJ IDEA + Cursive插件开发模式,只要在导入项目时选择根目录下的构建配置文件(project.clj对应Leiningen项目,pom.xml对应Maven项目),Cursive会自动识别依赖、支持直接在IDE内运行代码,和部署打包流程互不影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:45:45