分发Clojure应用程序的“最少工作”方法是什么?这与“最佳”方法不同吗?
例如,这里是一个简单的“应用程序”,我希望能够发送给某人:
(doto (javax.swing.JFrame. "Hello World")
(.add (javax.swing.JLabel. "Clojure Distributable"))
(.pack)
(.show))
我认为无论是否已经安装了Java,它都会对答案产生重大影响。
答案 0 :(得分:5)
对于Mac Os x,默认安装java,Apple提供JarBundler,允许您将jar转换为本机os x应用程序。 OS X应用程序不使用安装程序。
对于Windows Launch4j是一个很好的选择,它会将你的jar包装成带有图标的.exe,如果没有下载,它会检查是否安装了java。对于Windows安装程序,我建议NSIS(winamp的安装程序)。
对于Linux,jar文件+ bash脚本。
答案 1 :(得分:3)
Compile it to byte code然后使用Java Web Start(或者每个Java安装程序浮动你的船)?
对于没有安装Java的人 - 安装的某些人可以检测到这一点并启动JRE安装程序。 Web JWS执行此操作是页面上的一些Javascript,其中包含指向JNLP文件的链接。如果未检测到Java,则会将链接切换为JRE安装链接。
答案 2 :(得分:3)
最简单的方法是使用Maven,这是你需要做的事情:
获取Maven 2已安装的副本。
获取Clojure Maven Plugin的副本,转到其文件夹并运行mvn install
通过运行以下命令将clojure.jar安装到您的maven存储库中:
mvn install:install-file -DgroupId=org.clojure -DartifactId=clojure -Dversion=1.1.0-alpha-SNAPSHOT -Dpackaging=jar
-Dfile=clojure.jar
现在你需要创建一个pom.xml,告诉maven如何构建你的项目
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.clojure</groupId>
<artifactId>hello-world</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<build>
<plugins>
<plugin>
<groupId>com.theoryinpractise</groupId>
<artifactId>clojure-maven-plugin</artifactId>
<version>1.1-SNAPSHOT</version>
<configuration>
<sourceDirectories>
<sourceDirectory>src</sourceDirectory>
</sourceDirectories>
</configuration>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>clojure</artifactId>
<version>1.1.0-alpha-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
现在,假设你有一个看起来像的hello.clj:
(ns clojure.examples.hello
(:gen-class))
(defn -main[args]
(doto (javax.swing.JFrame. "Hello World")
(.add (javax.swing.JLabel. "Clojure Distributable"))
(.pack)
(.show)))
您的项目结构应如下所示:
项目/ pom.xml中
项目/ SRC / Clojure的/示例/ hello.clj
如果你去项目文件夹并运行mvn install,它应该创建project / target / hello-world-1.0.jar,这将有一个main方法,你应该可以用
运行它java -cp hello-world-1.0.jar:clojure.jar clojure.examples.hello
您可能还想查看One-Jar项目,它可以让您将应用程序和clojure库捆绑在同一个jar中。
答案 3 :(得分:2)
如果您需要完全独立的应用,请考虑Excelsior JET。
考虑一些jar-to-exe包装器,如launch4j。
这些建议一般用于Java平台,而不是专门用于Clojure ......