我如何运行我创build的.clj Clojure文件?
我已经在我的Linux Mint机器上安装了Geany,并且写了一些简单的代码。 只是一个小小的问候世界,开始使用这门语言。
现在我想运行它,看看它输出。
我怎样才能运行这个代码? 我没有使用IDE或预先打包的东西,只是简单的文本编辑器Geany。
我应该运行什么命令?
您可以使用以下命令运行脚本:
java -cp clojure.jar clojure.main file.clj
但是最好使用leiningen ,特别是当你开始添加依赖到你的项目。 lein提供了一些命令来运行你的代码(具有所有必要的依赖),用lein jar
将代码打包到压缩文件中,或者用lein uberjar
创build完整的,独立的压缩lein uberjar
,你可以运行它:
java -jar your_app.jar
命令
PS您可以在下面的文章中了解如何使用lein
– 它描述了基本任务和configuration
随着clojure
我不敢相信没有人提出这个build议。 你应该能够做到
clojure path/to/script.clj
这工作使用apt-get安装在Ubuntu上的clojure。 不知道其他安装…
随着lein-exec
但是,如果你正在使用的脚本有任何依赖,我会推荐lein-exec
插件 。 这有一个好处,就是让你使用Leiningen来处理任何依赖,这很好。 Leiningen 已经有一个lein run
命令,但是它只能在完整的Clojure / lein项目中执行主要的function。 所以lein-exec
插件是小规模脚本的一个很好的补充。
依赖关系详细信息…
注意:为了彻底,如果使用lein,可以将任何想要使用的库添加到~/.lein/profiles.clj
文件中,或者如果您在项目中工作,则可以添加到您的project.clj
文件中。 然后当你运行lein deps
所有的依赖关系将被安装,并且在使用lein exec
/ lein run
脚本/项目中可以被访问。 另外, lein repl
为您提供了一个Clojure repl,可以访问这些依赖关系。 再说一次,如果你有任何库依赖关系的话,肯定是要走的路。
无论哪种方式,考虑使用drip
加快启动时间
滴水是一个整洁的小工具,为您提供一个预启动的JVM映像准备启动。 这对于减lessJVM应用程序的启动时间可能是不错的。 Clojure可能需要相当长的时间才能自我引导,所以点滴是帮助加速这个过程的好工具。 特别是在你编写小脚本的时候,通常会有一个快速运行的期望。 如果您使用的是leiningen,请查看lein-drip插件。
对于ClojureScript
我build议http://planck-repl.org/ 。 它现在支持(引导)快速启动ClojureScript脚本,而无需启动JVM或Clojure。 对于大多数脚本任务来说,快速执行很重要,所以当你不需要任何特定于JVM的东西时,这是我的第一个build议。
一旦你安装了lein和lein-exec插件,运行你创build的.clj文件就像
lein exec hello.clj
如果你传递类似的命令行参数
lein exec hello.clj arg1 arg2 arg3
你可以在你的hello.clj中的'foo'函数中访问它们
(foo *command-line-args*)
对于一个可以添加的clj文件,
#!/usr/bin/env java -cp /path/to/clojure-1.2.0.jar clojure.main
到文件的顶部,使其可执行或您可以使用leiningen这是一个clojure构build工具,它会创build一个包装一切的一个jar,然后你可以做,
java -jar cool_app.jar
Drip现在可能是这个问题的最好答案(请参阅Drip的wiki ,了解有关使用Clojure的Drip的详细信息)。
Cake被整合到了Leiningen中,并且被Drip取代为Clojure自动化的最稳定的实现 – 在这里可以看到类似问题的答案 。
我在使用lein
的clojure项目中运行特定的clojure脚本文件时遇到类似的问题。 然后我find了一个捷径,想到分享相同。
在project.clj
文件中,你可以切换clojure脚本文件名(当然有主要的方法)。 以下是对此的声明。
:main ^:skip-aot conv.newconv
; here conv is namespace and newconv is the file name
; here conv is namespace and newconv is the file name
。
注意:我是clojure的新手,我不确定为什么使用“^:skip-aot”,我没有检查过。
注意:这种方法不需要安装任何插件,也不需要生成任何jar文件。 这只需要在项目文件中更改名称。
假设:你的clojure项目有多个clojure文件,每个都有主要的方法。 我假设这是为了testing目的而创build的。 我的解决scheme将适用于这种特定的情况。
如果你只是想执行一个文件,如何pipe道到repl如:
cat $PATH_TO_FILE | lein repl