I have completed the process of migrating Incanter from the Maven build tool to Leiningen.
Incanter now includes several project.clj files, one for the overall project and one for each submodule. The top-level project.clj file builds what was formerly called incanter-app/incanter-full using the modules incanter-core, incanter-charts, incanter-processing, incanter-io, incanter-pdf, and incanter-mongodb.
The modules live in the modules/ directory, and each is an independent Leiningen project that can be built as a standalone library.
The script/ directory has repl and swank scripts (both sh and bat) stolen from labrepl, and simple scripts for managing the builds of all the modules (install, test, clean).
One bonus of this change is that I have been able to push Incanter and its modules back on to Clojars.org.
To include the full library as a dependency in your Leiningen project, add the following entry to your project.clj file:
[incanter "1.2.1-SNAPSHOT"]
If you only want to include a subset of Incanter’s functionality in your project, use one of the following modules instead:
[incanter/incanter-core "1.2.1-SNAPSHOT"] [incanter/incanter-charts "1.2.1-SNAPSHOT"] [incanter/incanter-io "1.2.1-SNAPSHOT"] [incanter/incanter-processing "1.2.1-SNAPSHOT"] [incanter/incanter-pdf "1.2.1-SNAPSHOT"] [incanter/incanter-mongodb "1.2.1-SNAPSHOT"]
Updated build instructions can be found in the new README available in Incanter’s Github repository.
Nice, but won’t you miss all those nice src/main/clojure directories now? =)
This is great; I didn’t expect the switch to happen so quickly. Has the multi-module checkout-dependencies stuff worked well for you?
You mention having shell scripts to perform test, install, etc. across multiple modules. Do you think it’d be worth having a “lein multi” plugin that could do this for you?
I’m not even using the multi-module checkout functionality yet. I didn’t want to set up a build environment that would require a bleeding edge version of Leiningen. So, I’m just treating each module as an independent project.
I will definitely be using the multi-module functionality though, and I think it would be fantastic to have a plugin for installing and testing multi-module projects!
The latest edition of labrepl doesn’t contain incanter, how do I install incanter into labrepl?
I haven’t used labrepl, so I’m not sure.
David