将Clojure项目作为应用程序发布的最佳方法是使用lein uberjar创建包含所有依赖项的独立jar.任何具有兼容jvm的用户都可以运行java -jar your-uberjar.jar以运行您的应用程序.
如果您的应用程序以期望项目目录的内容在运行时存在的方式编写,则会出现一些复杂情况.clojure.java.io/resource允许使用资源,无论它们是否存在于当前目录树中,还是打包到包含您的应用程序的uberjar中.
通过使用 :main 指定核心名称空间(即 app.core)作为为 jar 文件调用的主类,将项目设置为作为独立 Java 应用程序运行。另外,添加用于AOT编译的uberjar配置文件。
项目.clj:
(defproject app "1.0.0-SNAPSHOT"
  :description "app Example."
  :dependencies
    [[org.clojure/clojure "1.8.0"]]
  :profiles {:uberjar {:aot :all}}
  :main app.core)
确保您在程序的名称空间中指定了 :gen-class 。还定义一个 -main 函数作为主入口点。
src/app/core.clj:
(ns app.core
  (:gen-class))
(defn -main [& args]
  (dostuff ""))
然后使用 Packr ( https://github.com/libgdx/packr ),这是一个用于打包 JAR、资产和 JVM 的小应用程序,以便在 Windows、Linux 和 Mac OS X 上分发。
创建 Packr 配置文件。
配置.json
{
  "platform": "mac",
  "jdk": "/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/",
  "executable": "My App",
  "classpath": [
    "target/app-1.0.0-SNAPSHOT-standalone.jar"
  ],
  "mainclass": "app.core",
  "icon": "resources/icon.icns",
  "minimizejre": "soft",
  "output": "myapp.app"
}
然后运行
$ lein uberjar
$ java -jar packr.jar config.json
您现在将拥有一个可以作为本机应用程序分发的包。此过程非常适合 GUI 应用程序。抱歉我对瓦拉一无所知。
| 归档时间: | 
 | 
| 查看次数: | 319 次 | 
| 最近记录: |