如何分发Clojure GUI应用程序?Clojure在这个主题中与Vala相比如何?

mar*_*cio 5 release clojure vala

这里有双重问题.

所以我在几分钟内用Clojure(使用跷跷板)构建了一个简单的GUI应用程序,这非常有趣!但现在我不知道如何实际释放它.我希望它作为一个独立的应用程序运行.我应该如何"编译"和分发Clojure GUI应用程序?

我也对Vala感兴趣,并想知道这两种语言的发布过程有多么不同.从发布/发布的角度来看,每一方的优缺点是什么?

noi*_*ith 6

将Clojure项目作为应用程序发布的最佳方法是使用lein uberjar创建包含所有依赖项的独立jar.任何具有兼容jvm的用户都可以运行java -jar your-uberjar.jar以运行您的应用程序.

如果您的应用程序以期望项目目录的内容在运行时存在的方式编写,则会出现一些复杂情况.clojure.java.io/resource允许使用资源,无论它们是否存在于当前目录树中,还是打包到包含您的应用程序的uberjar中.


ben*_*opy 3

通过使用 :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)
Run Code Online (Sandbox Code Playgroud)

确保您在程序的名称空间中指定了 :gen-class 。还定义一个 -main 函数作为主入口点。

src/app/core.clj:

(ns app.core
  (:gen-class))

(defn -main [& args]
  (dostuff ""))
Run Code Online (Sandbox Code Playgroud)

然后使用 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"
}
Run Code Online (Sandbox Code Playgroud)

然后运行

$ lein uberjar
$ java -jar packr.jar config.json
Run Code Online (Sandbox Code Playgroud)

您现在将拥有一个可以作为本机应用程序分发的包。此过程非常适合 GUI 应用程序。抱歉我对瓦拉一无所知。