【发布时间】:2011-04-05 10:30:18
【问题描述】:
假设我在 clojure 中创建了一个程序,我必须将它交付给客户。客户确实有一些计算机知识,但他不知道/不想启动 repl、加载我的程序并运行它。他想双击一个exe文件或运行一个shell脚本
我如何打包我的程序并交付(程序本身与 clojure jars)?
【问题讨论】:
假设我在 clojure 中创建了一个程序,我必须将它交付给客户。客户确实有一些计算机知识,但他不知道/不想启动 repl、加载我的程序并运行它。他想双击一个exe文件或运行一个shell脚本
我如何打包我的程序并交付(程序本身与 clojure jars)?
【问题讨论】:
如果您使用的是蛋糕,我发现的最佳方法是 cake bin。它将为您生成一个打包的二进制文件(可能与 launch4j 相同或相似)。
【讨论】:
你有几个选择:
lein uberjar 很好地组装所有内容,确保您已声明一个主类。java -cp ./clojure.jar:./myprogram.jar com.my.runthis.class
java -cp ./clojure.jar:./myprogram.jar clojure.main -e "(in-ns 'your-ns)(start-your-program)" -r
【讨论】:
您可以使用 leiningen 创建 uberjar,正如 Greg Harman 所写... 我个人使用 maven 创建具有所有依赖项的独立 jar,声明主类 - 这使用“java -jar your-jar-file”命令简化了它的运行。我还使用 Izpack 为我的程序创建安装程序
【讨论】:
最简单的方法是让 leiningen 为您处理 jar,它将所有内容打包到一个胖 jar 中,这就是您需要交付的所有内容,就像任何其他 java 应用程序一样。客户所要做的就是双击它。如果您需要一个 .exe 文件 launch4j 可以为您创建它,它也可以处理 JRE 安装(如果它尚未安装在客户端计算机上)。您不需要任何 bash 脚本等。
【讨论】: