说我在clojure中创建一个程序,我必须将它传递给客户端。客户端确实有一些计算机知识,但他不知道/想要启动repl,加载我的程序,然后运行它。他想双击exe文件或运行shell脚本
我如何打包我的程序并交付(程序本身与clojure罐)?
答案 0 :(得分:21)
您有几个选择:
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
答案 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相同或类似)。