如何从clojure代码构建可执行jar?
我希望它有一个main函数,以便 java -jar jarfile.jar 运行该程序。
答案 0 :(得分:10)
正如Erhan Bagdemir回答的那样,你应该使用Leiningen。以下是我在Windows上的操作方法:
您将下载Leiningen脚本并将其放在PATH
上的某个位置。如果路径中已有用于可执行脚本的文件夹,则执行以下操作:
/Users/vikbehal
)PATH
。为此,请打开“控制面板”,然后转到“系统”区域,您可以在其中编辑环境变量。通过向PATH
添加/Users/vikbehal/lein
(或调用任何文件夹)来编辑系统或用户的PATH
值,确保通过分号({分号)将该条目与其他条目分开({ {1}})。;
保存更改。您可以通过打开命令提示符并运行Ok
来验证是否已成功安装Leiningen。您应该看到Leiningen安装一些初始文件。如果您收到错误,请确保您已将Leiningen居住的文件夹正确添加到lein help
。
Leiningen为您提供了一个良好的默认目录结构,处理依赖关系管理,并确保在运行REPL时正确设置了Java的类路径,或者在这种情况下,会破坏您的应用程序。
这是Leiningen标准命令的破败:
PATH
看起来最后一个命令就是你想要的,对吧?首先,您需要配置一些东西,以便Leiningen可以正确构建您的可执行jar。
您需要做三件事才能使# Start a blank project
lein new my-project
# Pull down dependencies defined in your project.clj file
lein deps
# Create a "library" jar of your project
lein jar
# Create an executable jar of your project
lein uberjar
正常工作:
lein uberjar
函数,它将作为执行jar文件的“入口点”。 (注意-main
,它表示此函数更像是“Java方法”而不是常规的Clojure函数。)-
函数的文件顶部的(:gen-class :main true)
命名空间声明中添加ns
声明。-main
:main my.main.namespace
条目
醇>
现在运行project.clj
。在开发时,如果要测试应用程序作为可执行jar的行为,可以使用lein uberjar
,但不希望每次进行更改时都显式重新jar。
答案 1 :(得分:3)
答案 2 :(得分:2)
只是为了变化,我会为那些想要保持Java根源的人提及maven clojure plugin。