I have an allergy to Apache Maven. I've developed this allergy while working at Najdi.si, where some of my coworkers really pushed Maven for reasons beyond my comprehension. They kept on talking about writing POMs and building artifacts, while I couldn't see them producing any running code. I think Maven is a perfect addition to a toolbox of an abstraction astronaut (a.k.a. java programmator vulgaris). If you are not familiar with Maven, read this introduction:
Maven is a software tool for project management and builds automation. While primarily used for Java programming, it can also be used to build and manage projects written in C#, Ruby, Scala, and other languages.
My aversion towards Maven is not only visceral, but it has at least the following rational justifications:
- If you need such a complicated build tool than something is wrong with the organization of your code and your team.
- I hate external dependencies. I'm a strong believer that everything needed for the project to be built, should be right there, in the project folder.
- No external library should be upgraded unless there is a good reason for it, followed by extensive testing. Fred Brooks stated forty years ago that every bug after some time becomes a functionality.
Just recently, Maven pulled a dirty trick on my coworker and tried to sneak in to Zemanta, too. Fortunately, I've spotted it immediately and exorcised it before it could do any harm to us.