Maven Builds Are An Infinite Cycle Of Despair.
Kent R. Spillner has posted a divisive condemnation of popular build tool Maven, at his personal blog. After extolling the virtues of self-created build tools, and giving favourable reports of his experiences with Rake and Ant, Spillner introduces Maven builds as “an infinite cycle of despair that will slowly drag you into the deepest, darkest pits of hell (where Maven itself was forged.)” His blog closes with hyperlinks to download Ant and Rake, buried in the phrase “save yourself” – making it very clear how he feels about the Apache-hosted tool. Spillner concedes that you might initially be content with Maven but, in his opinion, “soon, you will encounter Maven’s low glass ceiling for the first time.” He claims that using “some convulted pom.xml hackery” to work your way around Maven-related problems is “a lot like some tragic Greek myth, only you are the damned soul and the eternity of suffering is your build process.” One of the (many) arguments Spillner has with Maven, relates to configuration. He claims that getting Maven to do anything other than “compile, run unit tests, package .jar file” requires “configuring the conventions (and)….Maven configuration is verbose, difficult to read and difficult to write.” Also coming under fire in the blog is Maven’s convention of automatically resolving its own plug-in dependencies and project dependencies; or, in Spillner’s words: “slowing down every build by connecting to the network and checking every dependency for any updates, and automatically downloading them.” He gives a specific example: “I recently worked on a Maven project which produced a 51 MB .war file; by switching to Ant with hand-rolled dependency management, we shrunk that .war file down to 17 MB.” “(It is) a gaping security hole since it is currently impossible in Maven to determine where artifacts originally came from and whether or not they were tampered with.” It all leads to his conclusion that: “Maven is broken and wrong.” However, he does have some words of encouragement for build tool developers: “you know your build is awesome when it works the opposite of Maven.”