Clojure有一个类似于〜/ .clisprc.lisp的配置文件吗?

时间:2011-03-07 02:10:38

标签: configuration clojure compilation

在我的平台上,我需要添加(set! *compile-path* (str *compile-path* ":."))以便(compile)找到我的脚本。每次我想编译时,我都不想输入。

4 个答案:

答案 0 :(得分:4)

在Clojure中处理设置“编译路径”的最简单方法是使用LeiningenCake之类的构建工具来管理项目。使用这些工具,您可以在编译/类路径上自动获得惯用的项目结构,所有源代码,以及处理依赖项检索,运行单元测试和构建项目的精美命令行工具。

以下是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。