Easy set up for Clojure on unixoid operating systems.
- Mac OS X 10.5+
- Linux (tested on Ubuntu 9.10)
- Windows (Cygwin)
For a while ClojureX tried to be everything for all people: it downloaded clojure, clojure-contrib and support packages for various editors, compiled and configured them. I now decided to give up on this one-size-fits-all approach and instead focus on always providing the latest stable versions of clojure and clojure-contrib as well as a full-featured "clj" script.
Set Up Instructions
$ git clone git://github.com/citizen428/ClojureX.git $ cd ClojureX
To create a symlink for the
clj script in
/usr/local/bin you can run the following command:
If you prefer to create the link somewhere else, you can do it manually like this:
$ ln -s <full path to this project>/clj <destination path>/clj
clj script expects
$JAVA_HOME in its environment. If
$JAVA_HOME is not set, it will attempt to determine it for you. If for some reason you cannot provide
$JAVA_HOME, you can set the
$JAVA variable at the top of the
clj command can be used to open an interactive session:
$ clj Clojure 1.1.0-master-SNAPSHOT user=>
It can be used to run a script:
$ clj test.clj Hello, Clojure!
Any options following the script will be passed as arguments to the script:
$ clj test.clj a b "c d" Hello, Clojure! Arg #1: a Arg #2: b Arg #3: c d
Use a shebang line at the start of your script to make a Clojure file executable:
Of course, you'll also need to enable the script's execute mode (e.g.,
chmod u+x <scriptname>) to run it this way.
You can also open a debug port using the
$ clj -d 1234 test.clj
clj script supports all of
clojure.main's command-line options. For example, to evaluate an expression, use
--eval. The script's value will be sent to standard output:
$ clj -e "(take 5 (iterate inc 0))" (0 1 2 3 4) $ clj --eval '(count "Hello, Clojure")' 14
--init option to evaluate a clojure script:
$ clj -i test.clj Hello, Clojure
You can intermix the eval and init options multiple times, and they will be evaluated in the specified order:
$ clj -e '"Before test"' -i test.clj -e '"After test"' "Before test" Hello, Clojure! "After test"
clj script will exit immediate after processing all the init/eval options. Use
--repl to instead start an interactive session.
$ clj -e '"Starting my own REPL"' -r "Starting my own REPL" user=>
clj supports all of the java command line options to configure the JVM.
$ clj -d64 -Xms4g -Xmx4g -verbose:gc -i wf2.clj -e '(wf/wf-atoms "O.all")'
To see a full description of
clj command-line options, pass it
$ clj --help Usage: clj ...
Working with Clojure
To add extra jar files to Clojure's classpath on a project-by-project basis, just create a
.clojure file in the project's directory. Here's an example:
If your project directory is
~/code/clojure/cafe, you can add the Grinder and Frother jars from the
~/code/clojure/cafe/lib directory by putting their relative paths, separated by a colon, into the
$ cd ~/code/clojure/cafe $ echo "lib/grinder.jar:lib/frother.jar" > .clojure
You can also list jars one per line in the .clojure file, like so:
$ cd ~/code/clojure/cafe $ ls -1 lib/*.jar > .clojure
Add scripts to work with Clojure projects after installation- Taken care of by Leiningen
Scott Haug for lots of new features for the clj script
Paul Rosania for adding Cygwin support
Dave Barker for adding debugging support (-d)
Mark Reid on which Carl's work was based
Tim Riddel from whom I stole the contents of the .emacs file