我已经在Linux Mint机器上安装了Geany,并编写了一些简单的代码。只是一个很小的世界,即可开始使用该语言。
现在,我想运行它并查看其输出。
如何运行此代码?我没有使用IDE或预先打包的东西,而只是使用简单的文本编辑器Geany。
我应该运行什么命令?
Answers:
FWIW,我在此将问题解释为专门询问如何运行单个文件(如脚本),而不是作为已编译项目的一部分。但是,显然,要运行一个文件的方式和原因与要构建一个完整项目的方式之间存在某种关系,因此我也将其权衡一下。
clj
工具文件在这里:
https://clojure.org/guides/deps_and_cli
这是Clojure项目的正式组成部分,这本身就是走这条路线的一个很好的理由。但是,与此处的其他解决方案相比,它具有两个优点:
deps.edn
~/.clojure/deps.edn
与通过别名提供干净的可重用功能相比,似乎做得更好。 ~/.lein/profiles.clj
clj
则不会像lein repl
在src文件中那样阻塞只是
clj your-code-file.clj
或者如果您有依赖关系
clj -Sdeps '{:deps {clj-time {:mvn/version "0.14.2"}}} your-code-file.clj
在脚本中也可以很好地工作!
#!clj -deps '{:deps {clj-time {:mvn/version "0.14.2"}}}
(ns my-crazy-script!
(:require ...))
...
我建议使用homebrew进行安装,它现在可以在Mac和Linux上使用。如果您使用Windows,建议您使用WSL + brew。
我通常看到的lein
(见下文)工具的一个优点clj
是,到那时为止,可以lein
处理构建和打包代码库的更多过程。但是,还有其他处理方式(请参见pack,uberdeps或cambada),以及clj
胜过IMHO。
lein
&lein-exec
如果您喜欢使用lein
工具,或者已经准备好~/.lein/profiles.clj
文件并且不想投资于学习clj
/ deps.edn
,可以考虑查看lein-exec
。
如果您已经有了project.clj
依赖项的设置,那么当然可以运行lein run -m <yer-namespace>[/<yer-main-fn>]
。
如上所述,lein
over的一个优点clj
是它是一个完整的构建工具,并且可以使用lein jar
或来为您制作jar / uberjars。lein uberjar
,部署等工作。
我建议http://planck-repl.org/。现在,它支持(引导)快速启动ClojureScript脚本,而无需启动JVM或Clojure。对于大多数脚本任务,快速执行很重要,因此,当您不需要特定于JVM的任何东西时,这是我的第一建议。
对于较大的项目,而不仅仅是repl / cli样式的使用,您可能希望查看Shadlow-CLJS,因为它易于合并香草JS项目。与FWIW一样,Shadow可以很好地与deps和lein集成在一起,并且具有内置的原始代码重载功能,例如figwheel。
drip
加快启动时间注意:多年来我一直没有尝试使用此工具,因此不知道它是否仍然有效或维护得如何。
Drip是一个精巧的小工具,可为您提供准备启动的预引导JVM映像。这对于减少JVM应用程序的启动时间可能非常有用。Clojure可能需要一段时间才能自我引导,因此滴水是帮助加快该过程的好工具。当您编写小的脚本时,尤其是这种情况,通常期望它们可以快速运行。如果您使用的是leiningen,请看一下lein-drip插件。
java
当然,您可以按照另一个答案的建议使用
java -cp clojure.jar clojure.main file.clj
但是您不会经常在野外看到这种情况,因为必须找到您的路径clojure.jar
并手动为依赖项构造类路径很麻烦。但是,要知道,每个人都有。
lein exec
“要走的路”?为什么不使用clojure
?
echo '(println "test")' > 1.clj
。java -cp ~/.m2/repository/org/clojure/clojure/1.6.0/clojure-1.6.0.jar clojure.main 1.clj
Exception in thread "main" java.io.FileNotFoundException: <FILENAME>.clj (No such file or directory)
对于单个clj文件,您可以添加,
#!/usr/bin/env java -cp /path/to/clojure-1.2.0.jar clojure.main
到文件顶部并使其可执行,或者您可以使用leiningen(这是clojure构建工具),它将创建一个打包了所有内容的jar,然后您就可以这样做了,
java -jar cool_app.jar
要通过命令行运行单个文件,请使用以下命令:
clj -m (NameSpace name)
例如: clj -m Sample
或者,如果您想运行repl:
(load-file filelocation)
例如:
(load-file "Sample.clj")
在使用Clojure项目运行特定的Clojure脚本文件时,我遇到了类似的问题lein
。然后我找到了一条捷径,想共享一下。
在project.clj
文件中,您可以切换clojure脚本文件名(这当然是主要方法)。以下是对此的说明。
:main ^:skip-aot conv.newconv
; here conv is namespace and newconv is the file name
。
注意:我是Clojure的新手,我不确定为什么使用'^:skip-aot`,但尚未检查。
注意:这种方法不需要安装任何插件,也不需要生成任何jar文件。这仅需要更改项目文件中的名称。
假设:您的clojure项目有多个clojure文件,每个文件都有主要方法。我假设这是仅为测试目的而创建的。我的解决方案适用于这种特定情况。
sudo apt-get install clojure
然后clojure hello.clj