【发布时间】:2010-12-13 12:41:54
【问题描述】:
抱歉,帖子太长了,但这个论坛总是要求提供用例:-)。
我经常被要求为我的组织编写实用程序应用程序(GUI 和命令行)。我最常使用 Java 和最近的 Scala 编写这些代码。
Clojure(和其他 Lisps)中的“哲学”似乎以 REPL 为中心,我不得不承认它是一个很好的开发环境,但我显然无法生成要求用户“安装 Clojure 和 Clojure”的实用程序-contrib,然后将该实用程序解压缩到硬盘驱动器上的目录中,使用以下类路径从命令行启动 Clojure,..."。用户并不关心该实用程序是用 Clojure 编写的。他们只想指向并单击,或者最多键入“java -jar Utility.jar -?”在命令行上。
我的问题集中在编译和将应用程序分成许多命名空间/文件。
我知道main 方法必须位于包含(gen-class...) 命令(或ns 命令上的:gen-class 子句)的Clojure 文件中。我是否对其他 Clojure 文件执行相同操作,还是应该将它们保留为打包在 JAR 中并由 main 文件加载的源代码?在开发过程中测试来自 REPL 的附加文件怎么样?
我一直在使用 leiningen、cake 和 maven 构建自包含的 JAR(包含解压的 clojure.jar、clojure-contrib.jar 和 commons-cli.jar 文件),但到目前为止我一直在编写我的代码在与main 方法相同的文件中。
【问题讨论】: