Problems to Solve

  1. Publishing: Make Clojure and its libraries available to build tools
  2. Building: Compile, test, and package Clojure projects for release
  3. Mixing: Combine Clojure and other languages in one build
  4. Fetching: Download & use external dependencies in Clojure projects

These are all independent! But we expect a build system to do all of them.

Potential Solutions

Maven 2/3 with com.theoryinpractise:clojure-maven-plugin

Maven 2/3 with redesigned clojure-maven-plugin

Ant with maven-ant-tasks

Clojure-specific tool wrapping Maven (e.g., Leiningen)

Clojure-specific tool that can use Maven repositories

Polyglot Maven

Alternate-language tool (e.g., Gradle)

Issues to Consider

Current clojure-maven-plugin

What do we need?


Radical Change Thought

Instead of having just "one" plugin, maybe it would be better to break it up to multiple artifacts/plugins, with specific functionality.  For ultimate flexibility I'm guessing each of these artifacts would have to be a separate git repo, with their own lifecycles.

What do other JVM languages do?