Hiram Chirino commented on ZOOKEEPER-83:


maven provides a much more standardize build process than ant.  Any maven java 
project has the same directory structure and build/release procedure.  
Therefore new contributors who are familiar with maven will be more comfortable 
contributing to ZooKeeper because of it.

It handles lots of the wonky ASF relase rules like:
* GPG sighing
* staging release artifacts to get voted on. 
* building binary distros with api docs
* building source distros
* including and verifying LICENSE and NOTICE files are in all jars
* It can run the rat tool for you to verify that all source files have the 
right headers on them

It encourages folks to use your project
* It deploys your jar artifacts to a centralized maven repository where other 
projects can automatically pull your libs into their builds.
* the maven repo is a sort of eco system, where if your artifacts are available 
in it, folks are more willing to use your stuff, and they in turn pubish 
artifacts the depend on ZooKeeper which in turn might get used by someone else 
who transitively gets ZooKeeper
* It encourages good release patterns like including the version number in the 
jar.  Nice to have so that when folks use your jars it is obvious what version 
they are using.

It encourages good modularization/decoupling:
* It's easy to add additional jars to the project and then add dependencies 
between them.  This encourage folks to decouple their code properly.
* Once you have a nicely modular project, it easy for folks to add additional 
optional modules for new features.  For example I could see folks wanting a 
zookeeper-spring module.

Plus it does lots of useful things like:
* generate IDE project files so that they don't need to be manually maintained.
* it can enforce checkstyle rules if desired
* Runs findbugs and cobertura 
* It can creates  great set of cross indexed html docs about the build 

Plus since it's declarative in a nature, folks can use other maven plugins 
against the build (without changing the build files) to access additional 
interesting features.

Maven in general is more higher level concept than ANT.  It brings power and 
flexibility to the table.  Plus it's the direction most new java projects are 
taking these days.

So I think the question really is why keep ANT?

> Switch to using maven to build ZooKeeper
> ----------------------------------------
>                 Key: ZOOKEEPER-83
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-83
>             Project: Zookeeper
>          Issue Type: Improvement
>          Components: build
>            Reporter: Hiram Chirino
>            Assignee: Hiram Chirino
>         Attachments: zookeeper-mavened.tgz
> Maven is a great too for building java projects at the ASF.  It helps 
> standardize the build a bit since it's a convention oriented.
> It's dependency auto downloading would remove the need to store the 
> dependencies in svn, and it will handle many of the suggested ASF policies 
> like gpg signing of the releases and such.
> The ZooKeeper build is almost vanilla except for the jute compiler bits.  
> Things that would need to change are:
>  * re-organize the source tree a little so that it uses the maven directory 
> conventions
>  * seperate the jute bits out into seperate modules so that a maven plugin 
> can be with it

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

Reply via email to