Error formatting macro: pagetree: java.lang.NullPointerException
Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version. Compare with Current  |   View Page History

Goals

We need a convenient, uniform way to build Clojure and contrib projects. Problems are

  • Team will work across many projects and will not want to lean a different approach to building each one.
  • Projects will need to work with a variety of tools: Hudson, leiningen, maven, and IDEs at a minimum. (Note that these are to some degree overlapping.)
  • Users will want an easy way to find released versions.
  • Users will want sufficiently fine granularity of releases to get things they need, without a ton of stuff they don't.
  • Team will need automation: one step to trigger an entire push/build/release cycle when necessary.
  • Clojure/core will probably want to package multiple libs into easy-to-consume distributions.

Near-term Process

  • Clojure and all contrib projects will be built using Maven 2
  • All POMs will inherit from pom.baseline or pom.contrib
  • pom.contrib includes support for specifying a local clojure.jar
  • Only Hudson will deploy releases or SNAPSHOTs
  • All builds must be configured for JDK 1.5 in Hudson
  • Stable and SNAPSHOT releases will be deployed to Sonatype's OSS repositories
  • Stable releases will be initiated by Hudson (the "Perform Maven Release" link)
  • Contrib projects will produce source-only JARs whenever possible
  • ZIP distributions will be generated by Maven 2 and manually uploaded to clojure.org

Notes

  • In "classic" clojure-contrib, only 4 modules require AOT-compilation: condition, fnmap, jmx, repl-ln

Benefits

  • Common build configuration across org.clojure projects
  • Ensure released JARs are built with JDK 1.5
  • SNAPSHOT releases automatically uploaded to public OSS repositories
  • Stable releases automatically staged for promotion into Maven Central repository
  • Better continuous integration

Possible Future Development

  • Leiningen support
  • Ant build scripts for local development/testing
  • Aggregate projects that package many contrib libraries in one distribution
  • Testing harness to build/test many Clojure libraries with a locally-built Clojure JAR
  • Redirect build.clojure.org/snapshots and /releases to Central or Sonatype repository
Labels: