How to Include Non Clojars/maven Clojure Version in Your Lein Project

Do you need to have a specific version of Clojure in your leiningen project that you can’t get from Clojars?

I ran into this problem when I wanted to run a sample project on Clojure’s reducers – which is not in the current Clojars version of 1.4.0.  I needed to use the most recent version, (unreleased), of 1.5.0.  These are the steps to get you running.

  • Clone the clojure git repository 

  • In the project directory – run ant to build the jar

  • Install the jar into your local maven repo

mvn install:install-file -DgroupId=org.clojure -DartifactId=clojure -Dfile=clojure-1.5.0-master-SNAPSHOT.jar -DpomFile=pom.xml

  • Now you can update your lein project.clj with

(defproject reducers "1.0.0-SNAPSHOT" :description "FIXME: write description" :dependencies [[org.clojure/clojure "1.5.0-master-SNAPSHOT"]]) Run lein deps and you should be all set.

This trick also works with running leiningen projects with Datomic.  In this case – download the Datomic library and from the root directory run  mvn install:install-file -DgroupId=com.datomic -DartifactId=datomic -Dfile=datomic-0.1.3164.jar -DpomFile=pom.xml

Update I found out that there is already an alpha version of Clojure on Maven. So you don’t need to do the build.

It would simply be (defproject reducers "1.0.0-SNAPSHOT" :description "FIXME: write description" :dependencies [[org.clojure/clojure "1.5.0-alpha2"]])