I continue to believe that Maven is the first choice for build systems despite the lack of quality documentation (which is a continued problem). Why? (Or specifically, why should an open souce project use Maven above other build systems?…..)

…open source projects benefit from having the most widely portable build possible. Widely portable builds reduce the inefficiencies associated with contributing to a project. In an open source project (such as Maven) there are two distinct groups: end-users and developers. When an end-user uses a project like Maven and decides to contribute a patch to Maven, they have to make the transition from using the output of a build to running a build. They have to first become a developer, and if it is difficult to learn how to build a project, this end-user has a disincentive to take the time to contribute to a project. In a widely portable project, an end-user doesn’t have to follow a set or arcane build instructions to start becoming a developer, they can download the source, modify the source, build, and submit a contribution without asking someone to help them set up a build environment. When the cost of contributing source back to an open-source project is lower, you’ll see an increase in source code contributions, especially casual contributions which can make the difference between a project’s success and a project’s failure. One side-effect of Maven’s adoption across a wide group of open source projects is that it has made it easier for developers to contribute code to various open source projects.

In other words, even with Maven’s problems (which will shortly be addressed, I promise), it still defines a common interface that many developers are familiar with. If you continue to use some custom procedural build system (even in your closed corporate environment) you are bucking the trend. The common interface, the ability to just “sit down in the driver’s seat” and go, is more important than making sure that some highly opinionated software architect at a very large organization is happy with the “cleanliness” of the Maven repository or that someone feels that the Maven conventions can be bent to fit their own conventions.

Go ahead, adopt your own build process because you just *think* you know better, and have fun maintaining it. I know one thing about build systems, they are the last thing you need to be worrying about and your clients or employers rarely care to spend money on your clever, custom build system.