如何运行我创建的.clj Clojure文件?

时间:2011-10-05 03:51:23

标签: command-line clojure

我在我的Linux Mint机器上安装了Geany,并编写了一些简单的代码。只是一个小小的世界,开始使用该语言。

现在我想运行它,看看它输出了什么。

如何运行此代码?我没有使用IDE或预先打包的东西,只是简单的文本编辑器Geany。

我应该运行什么命令?

8 个答案:

答案 0 :(得分:59)

使用clojure

我无法相信没有人提出这个建议。你应该能够做到

clojure path/to/script.clj

这适用于使用apt-get在Ubuntu上安装的clojure。不确定其他安装......

使用lein-exec

但是,如果您正在处理的脚本具有任何依赖关系,我建议使用lein-exec plugin。这样做的好处是可以让你使用Leiningen来处理任何依赖项,这很好。 Leiningen already has一个lein run命令,但它只适用于执行完整Clojure / lein项目中的主要功能。所以lein-exec插件是小规模脚本编写的一个非常好的补充。

依赖关系详情......

注意:为了彻底,如果使用lein,您可以将要使用的任何库添加到~/.lein/profiles.clj文件,或者添加到project.clj文件中,如果您正在使用项目。然后,当您运行lein deps时,将使用lein exec / lein run在您的脚本/项目中安装和访问所有依赖项。此外,lein repl为您提供了一个可以访问这些依赖项的Clojure repl。同样,如果你有任何库依赖,那绝对是你要走的路。

无论哪种方式,请考虑使用drip来加快启动时间

Drip是一个简洁的小工具,可以为您提供准备启动的预引导JVM映像。这对于减少JVM应用程序启动时间非常有用。 Clojure可能需要花费很长时间来自我引导,因此滴水是一个很好的工具,可以帮助加快这个过程。当您编写小脚本时尤其如此,通常需要快速运行。如果您正在使用leiningen,请查看lein-drip插件。

对于ClojureScript

我建议http://planck-repl.org/。它现在支持(引导)快速启动ClojureScript脚本,而无需启动JVM或Clojure。对于大多数脚本任务而言,快速执行很重要,因此当您不需要JVM特有的任何内容时,这是我的第一推荐。

答案 1 :(得分:56)

您可以使用以下命令运行脚本:

java -cp clojure.jar clojure.main file.clj

但最好使用leiningen,尤其是当您开始向项目添加依赖项时。 lein提供了许多命令来运行代码(包含所有必需的依赖项),使用lein jar将代码打包到存档中,或者创建可以与lein uberjar一起运行的完整,独立的存档:

java -jar your_app.jar

命令

P.S。您可以在following article中了解如何使用lein - 它描述了基本任务&构造

答案 2 :(得分:12)

一旦您安装了lein和lein-exec插件,运行您创建的.clj文件就像

一样简单
lein exec hello.clj

如果您正在传递命令行参数,例如

lein exec hello.clj arg1 arg2 arg3

您可以在“foo”中访问它们。 hello.clj中的函数,如

(foo *command-line-args*) 

答案 3 :(得分:8)

对于单个clj文件,您可以添加

#!/usr/bin/env java -cp /path/to/clojure-1.2.0.jar clojure.main

到文件的顶部并使其可执行,或者您可以使用leiningen这是一个clojure构建工具,它将创建一个包装好的所有包装,然后就可以了,

java -jar cool_app.jar

答案 4 :(得分:1)

Drip现在可能是这个问题的最佳答案(有关使用Drip with Clojure的详细信息,请参阅Drip's wiki。)

Cake已被纳入Leiningen,并已被Drip - see this answer取代为Clojure自动化最稳定的实现,在此处提出了类似的问题。

答案 5 :(得分:1)

如果您只想执行单个文件,请如何将其传递给repl,如:

cat $PATH_TO_FILE | lein repl

答案 6 :(得分:0)

我在使用lein从clojure项目中运行特定的clojure脚本文件时遇到了类似的问题。然后我找到了一条捷径,想到分享同样的东西。

project.clj文件中,您可以切换clojure脚本文件名(当然还有主要方法)。以下是对此的陈述。

:main ^:skip-aot conv.newconv ; here conv is namespace and newconv is the file name

注意: 我是clojure的新手,我不确定为什么使用'^:skip-aot`,我没有检查过。< / em>的

注意: 此方法,不需要安装任何插件,也不需要生成任何jar文件。这只需要更改项目文件中的名称。

假设:您的clojure项目有多个clojure文件,每个文件都有main方法。我假设这是为了测试目的而创建的。我的解决方案适用于这种特定情况。

答案 7 :(得分:0)

要通过命令行运行单个文件,请使用以下命令:

clj -m (NameSpace name)

例如:clj -m Sample

或者如果您想运行repl:

(load-file filelocation)

例如:

 (load-file "Sample.clj")