运行Clojure程序

时间:2010-08-29 14:23:45

标签: clojure packaging

说我在clojure中创建一个程序,我必须将它传递给客户端。客户端确实有一些计算机知识,但他不知道/想要启动repl,加载我的程序,然后运行它。他想双击exe文件或运行shell脚本

我如何打包我的程序并交付(程序本身与clojure罐)?

4 个答案:

答案 0 :(得分:21)

您有几个选择:

  • 将程序编译为Java类,并给出一个main方法。将它们打包成可执行的jar。
  • 如上所述,如果您使用Leiningen,那么您可以使用lein uberjar很好地组合所有内容,确保您已声明主要类。
  • 您可以将项目打包到一个不可执行的jar(无主类)中,并创建一个shell脚本/批处理文件来执行正确的类,例如java -cp ./clojure.jar:./myprogram.jar com.my.runthis.class
  • 只需将.clj文件打包到jar中,然后使用shell / batch脚本启动repl,然后自动发出命令,例如java -cp ./clojure.jar:./myprogram.jar clojure.main -e "(in-ns 'your-ns)(start-your-program)" -r

答案 1 :(得分:8)

最简单的方法是让leiningen为你处理jar,它会将所有东西打包成一个胖胖的jar,就像任何其他java应用程序一样。所有客户要做的就是双击它。如果您需要.exe文件launch4j可以为您创建它,它还可以处理JRE安装,因为它尚未安装在客户端计算机上。您不需要任何bash脚本等。

答案 2 :(得分:6)

你可以使用leiningen创造uberjar,正如格雷格哈曼写的那样...... 我个人使用maven来创建包含所有依赖项的独立jar,声明主类 - 这样可以使用'java -jar your-jar-file'命令简化它的运行。我还使用Izpack为我的程序创建安装程序

答案 3 :(得分:2)

如果您使用蛋糕,我发现这样做的最佳方法是cake bin。它将为您生成一个打包的二进制文件(可能与launch4j相同或类似)。