Kevin Nuckolls asked if the Swank server I set up using Maven in my previous post can be started using Leiningen instead. The answer is yes. It’s very simple, in fact.
You don’t need Maven, Git, or even to manually install Incanter. You just need to install Leiningen, as described in this post, and then create a project directory containing the following project.clj file:
(defproject incanter-swank "0.1.0" :description "A Swank Server for Incanter" :dependencies [[incanter "1.0-master-SNAPSHOT"]] :dev-dependencies [[leiningen/lein-swank "1.0.0-SNAPSHOT"]])
Next download Incanter and its dependencies with Leiningen,
$ lein deps
and start a Swank server.
$ lein swank
Now connect to it from Emacs using M-x slime-connect
, as described in my previous post and that’s it.
[NOTE: The first time you build this project, you may see a error message like, java.util.zip.ZipException: duplicate entry. This is a problem I’ve recently been seeing with Leiningen builds, but the jar files that are produced are valid, and the message will not occur when starting the Swank server after the initial build. I am looking into this.]
lein uberjar fails for me, with
java.util.zip.ZipException: duplicate entry: incanter/censored.clj (NO_SOURCE_FILE:0)
I’d be grateful for any suggestions.
I’ve started seeing this error too recently too. The jar that is produced works correctly, try it out.
Somehow Leiningen sees two copies of each Incanter source file and the jar application doesn’t like this and complains when it sees the copy. But the jar that is produced is valid.
I need to look into this.
At this moment I get the following error when running lein deps:
1 required artifact is missing.
for artifact:
org.apache.maven:super-pom:jar:2.0
I have it working with:
(defproject clj-finance “0.0.1-SNAPSHOT”
:description “FIXME: write”
:dependencies [[incanter “1.2.3-SNAPSHOT”]]
:dev-dependencies [[swank-clojure “1.2.1”]]
:main main)