构建Clojure蛋糕构建环境
我有一个名为mr1的clojure应用程序;其project.clj位于./mr1/,mr1.clj位于./mr1/src 我不知道如何正确地构造目录、名称空间和project.clj文件,因此我可以使用cake-bin构建二进制文件 随信附上我当前的project.clj和mr1.clj的头尾 src/mr1.clj将fine加载到cake repl中并执行。cake bin生成一个不包含main的mr1文件构建Clojure蛋糕构建环境,clojure,Clojure,我有一个名为mr1的clojure应用程序;其project.clj位于./mr1/,mr1.clj位于./mr1/src 我不知道如何正确地构造目录、名称空间和project.clj文件,因此我可以使用cake-bin构建二进制文件 随信附上我当前的project.clj和mr1.clj的头尾 src/mr1.clj将fine加载到cake repl中并执行。cake bin生成一个不包含main的mr1文件 (defproject mr1 "0.0.1-SNAPSHOT" :descri
(defproject mr1 "0.0.1-SNAPSHOT"
:description "TODO: add summary of your project"
:dependencies [[org.clojure/clojure "1.3.0"]
[org.clojure/tools.cli "0.1.0"]]
:main mr1)
(ns mr1
(:use [clojure.string :only [split]]
[clojure.string :only [join]]))
。
.
正如我在回答您的问题时提到的,您必须启用名称空间的AOT编译。我在这里复制了这个答案,以防有人有同样的问题 正如文件所说,
:main
键应该有一个包含-main
函数的名称空间作为赋值。所以你应该有这样的功能
(defn -main [& args]
(do-things-you-want-to-do-on-program-start))
在您的mr1.clj中。另外,如果你想把你的程序作为一个独立的jar使用,你必须对这个名称空间进行分类。我的意思是,你必须:
:gen class
选项,如下所示:
(ns mr1
(:gen-class)
...other options...)
(defproject mr1 "0.0.1-SNAPSHOT"
...other definitions...
:aot [mr1]
:main mr1)
完成此操作后,您可以使用
cake
为您生成可执行jar。很抱歉发生冲突,也感谢您的回答。
(defproject mr1 "0.0.1-SNAPSHOT"
...other definitions...
:aot [mr1]
:main mr1)