【问题标题】:Clojure / Lein / Package into JarClojure / Lein / 打包到罐子里
【发布时间】:2012-05-01 16:15:18
【问题描述】:

在过去的 6 个月里,我一直在从 repl 运行我的 Clojure 应用程序。

也就是说,每当我想运行应用程序时,我都会加载一个 clojure repl,然后输入: (load-file "src/run.clj") ... 它运行我的应用程序。

然后,clojure 加载我所有的 *.clj 文件,编译它们,然后运行。

我最近切换到 Lein。我想“提前编译/打包”我的代码,这样我就可以获得一个带有 Main 方法的 jar,并通过“java ...”直接在命令行上运行它,而不必加载clojure/lein repl.

我很清楚我需要做一些 RTFMing。但是,如果有人能指点我一个很好的教程,那将不胜感激。

谢谢!

【问题讨论】:

    标签: java clojure leiningen


    【解决方案1】:

    official lein tutorial 中也有一个不错的教程。我只是将这些信息包括在内,以防我们将来出现任何死链接。

    1) 您首先需要通过在 project.clj 中添加 :main 来指定主命名空间

    (defproject yourproject "0.1"
       :dependencies [[org.clojure/clojure "1.4.0"]]
       :main yourproject.core)
    

    2) 在您指定的主命名空间中,您必须添加(:gen-class),并且您必须使用(defn -main ...) 指定主函数

    (ns yourproject.core
      (:gen-class))
    
    (defn -main [& args]
      (println "This is your crazy project!"))
    

    3) 运行uberjar 创建独立jar

    lein uberjar
    

    4) 使用java -jar 运行您的程序

    java -jar yourproject.jar
    

    【讨论】:

      猜你喜欢
      • 2012-06-04
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      相关资源
      最近更新 更多