apache/incubator-storm — pull request #14 by ptgoetz (2013-12-31 05:03:58+00:00)
Title: Switch from Leiningen to Maven

This is a work-in-progress, but I'd appreciate any feedback.

### Summary

This patch changes the build system from Leiningen to Maven, which will greatly simplify the Apache release process. I've tried to retain the Leiningen/Clojure-friendly features of the previous build system as much as possible. Any IDE with Maven support should be able to import the project (I've tested with Intellij IDEA).

#### Maven Modules
This is a multi-module build, consisting of the following modules:

* **storm-deps** -- This is a collection of storm dependencies that need to be shaded/repackaged (i.e. java package names changed to avoid dependency conflicts). Currently only the `libthrift` dependency is shaded/repackaged, but additional packaged could be added in the future.

* **storm-core** -- This module contains the majority of the storm code (clojure, java, python, etc.). This could be broken down into further submodules, but that isn't necessary yet.

* **storm-dist** -- This module creates project distribution/release artifacts (both source and binary) with the necessary signatures.

#### Developers
All the Storm code (for now) resides in `storm-core`.

##### Initial Settup
If you are building from a fresh checkout, you will need to either run a top-level install (`mvm install`) from the source root directory, or run `mvm install` in the `storm-deps\libthrift` directory. The `storm-deps` submodule contains modules that repackage Storm dependencies (by changing the package name) in order to avoid runtime conflicts with users' topology dependencies.

Currently only the Apache Thift dependency is shaded.

###### REPL support

You can run a Leiningen-style REPL by running the following command in `storm-core`:

```
$ mvn clojure:repl
```

#### Committers/Release Managers

The following command will build everything, generate documentation and reports, sign artifacts, and deploy (for now we only deploy to `/tmp`):

```
mvn clean install site site:deploy
```

Reports can then be found in `/tmp/site/index.htm`.

Key reports include:

* Apache RAT (Release Audit Tool): `/tmp/site/rat-report.html`
* Project Dependencies: `/tmp/site/dependencies.html`