在我的平台上,我需要添加(set! *compile-path* (str *compile-path* ":."))
以便(compile)
找到我的脚本。每次我想编译时,我都不想输入。
答案 0 :(得分:4)
在Clojure中处理设置“编译路径”的最简单方法是使用Leiningen或Cake之类的构建工具来管理项目。使用这些工具,您可以在编译/类路径上自动获得惯用的项目结构,所有源代码,以及处理依赖项检索,运行单元测试和构建项目的精美命令行工具。
以下是Leiningen定义的一些基本命令行任务,因此可以在任何项目中使用:
classpath Show the classpath of the current project.
clean Remove compiled artifacts and jars from project.
compile Compile Clojure source into .class files.
deps Download all dependencies and place them in the :library-path.
help Display a list of tasks or help for a given task.
install Install the current project or download the project specified.
interactive Enter interactive shell for calling tasks without relaunching JVM.
jar Package up all the project's files into a jar file.
javac Compile Java source files.
new Create a new project skeleton.
plugin Manage user-level plugins.
pom Write a pom.xml file to disk for Maven interop.
repl Start a repl session either with the current project or standalone.
run Run a -main function with optional command-line arguments.
swank Launch swank server for Emacs to connect.
test Run the project's tests.
test! Run a project's tests after cleaning and fetching dependencies.
uberjar Package up all the project's files and dependencies into a jar file.
所以你通过运行lein new <name of project>
开始一个新项目,它为Clojure项目生成一个标准的目录结构。在编写代码之后,可以运行lein compile
来简单地编译Clojure源代码,或者可以直接将lein jar
打包为代码作为Jar文件。对于包含Clojure语言和运行程序所需的所有依赖项的可执行jar,请改用lein uberjar
。
如果您不使用这些工具,则需要手动管理类路径,以包含存储依赖项jar的位置以及源代码所在的位置。我强烈建议使用上述构建工具之一。
答案 1 :(得分:3)
您可以在运行Clojure时指定-i
,以便在启动时评估文件。
下面是我用来运行Clojure的脚本作为例子:
#!/bin/bash
# GUI mode
if [ "$1" != "--no-fork" ]; then
gnome-terminal -t Clojure -x $0 --no-fork $* &
exit
fi
shift
breakchars="(){}[],^%$#@\"\";:''|\\"
if [ -f project.clj ]; then
lein repl
else
rlwrap --remember -c -b "$breakchars" \
java -Djava.ext.dirs=$HOME/.clojure clojure.main \
-i $HOME/.clojurerc --repl
fi
答案 2 :(得分:2)
Leiningen每次启动时都会加载〜/ .lein / init.clj。此外,您可以在project.clj文件中添加:repl-init密钥,以便在每个repl中加载该命名空间。 Clojure真的不是单独使用而没有任何支持工具,所以自己调用(compile [...])几乎不是正确的答案。
答案 3 :(得分:1)
在Clojure中,这是在Java级别(类路径等)进行管理,而不是使用.rc文件。当我第一次开始使用Clojure编程时,我会运行一个bash脚本,但现在我使用的是Leiningen。