
Why Dustin Sallings Doesn't Use Maven - mbrubeck
http://dustin.github.com/2010/04/01/why-not-maven.html
======
yesimahuman
Maven and Ant are unnecessarily verbose. I find Makefiles and CMake far
simpler. Maybe it's just the XML I'm sick of.

~~~
viraptor
I always thought about Ant as `make + native Java plugins`. Is there anything
else it can do that doesn't fit in that description?

~~~
gchpaco
Correct dependency handling and implicit rules, for one. The amount of effort
required to translate

    
    
      %.o: %.c
    

into ant is unbelievable. You can use the depend tasks but those require you
to know your dependencies ahead of time and take explicit action to check
them.

It is more a measure of how unbelievable maven 2 is that ant looks pretty good
in comparison, because ant is terrible at most things other than running
javac.

------
Lewisham
The thing I do like about Maven is that you're pretty much guaranteed that if
the build works on your machine, it'll work for everyone else too.

This might be because it stops you doing anything stupid, but removes power
too. Like blunt scissors.

I'm going to be switching to Buildr for my next project, if only because it
can pull in dependencies that aren't in the Maven repos, which would mean it's
even more likely to work on someone else's machine... as long as I don't do
anything stupid :)

~~~
donw
Like hell you are.

You're guaranteed that it will work on a machine that has network access to
the same resources, that has a similar enough version of Java, and with
permissions to write wherever the hell Maven decides it wants to put things.

From my point of view as a sysadmin, Maven is a tool that was invented to
punish people in my profession. Want to test in a sandbox separated from your
SCM for security reasons? Good luck. How about grabbing a defunct project from
the Internet because it does what you need, and discovering that it won't
build because it wants a dependency that it can't download, and so rather than
just letting you supply the dependency in a way that will satisfy the
compiler, you have to make Maven happy as well.

I shouldn't have to fight this much with a build tool to do simple things,
like BUILD THE APPLICATION.

This is one of the few rants I've posted here, but fuck Maven. It's an
overcomplicated answer to a problem that the mindset that led to Maven
development created in the first place.

~~~
brown9-2
_Want to test in a sandbox separated from your SCM for security reasons? Good
luck._

How in the world does the choice of build tool affect if you can test your
application (once it's built) in a sandbox environment? If you can compile and
package the application, you should be able to upload it to whatever
environment you want.

~~~
donw
Unless that 'build tool' is Maven, which wants to be build tool, dependency
resolver, project manager, SCM, and very likely the Pope. Maven really doesn't
like being cut off from its network repositories.

~~~
brown9-2
You can pretty easily set up your build to package up your app and all it's
dependencies as a tar.gz/zip/whatever during the package phase. This is what
you can export to your sandbox environment. Or does what you would want to
test in the sandbox include the building and dependency resolution phases?

------
mtrimpe
How come all Maven criticism is completely off the mark?

@mml: Maven is in no way ant-based. It has an ant-plugin but that's pretty
much all.

@dustin: The release thing? It's called the 'release-plugin'.

~~~
mml
Maven is clearly ant++. The concept of XML as buld descriptor language is
clearly lifted direcly from ant.

It's a tragedy that the java environment is so comparatively weird that make &
cousins weren't obvious choices to build java projects.

I spent a majority of the last decade & change dealing with ant and maven
builds on million line projects. My hatred for both is from years of bitter
experience.

Sorry, I hate them both with the zed-like fury of a billion suns.

~~~
jbooth
My opinion of Maven is the same as Winston Churchill's opinion of democracy:
"It's the worst system, aside from all the other systems."

I've seen plenty of makefiles bomb out on systems that were different from the
system they were written for -- it's hard to have that problem with Maven. And
the idea of a versioned repo that stores multiple revisions of all of your
components is awesome, provided you actually use it correctly and don't leave
everything at 0.1-SNAPSHOT forever.

The problem it's solving is inherently hellish, so while there could be better
ways of solving it, Maven's the least crappy one I've seen so far.

------
mml
Maven, of any version, is fiendishly idiotic. The fact that the now almost
extinct jellyscript is considered a good thing by the author gives me pause.

Really, I can't fathom why anyone persists in using any ant-based system when
there are many better choices (like suicide).

If you'd like a short chuckle, look up the origins of ant.

------
Daniel_Newby
+1 for the guy sitting at the window story.

Maven killed the ANTLR parser generator for me. I wanted to try making a
compiler and ANTLR looked like the bee's knees. So I download it, try to build
it using the official instructions, and package downloads start zooming across
my screen.

"What in the nine green hells of Zorgon is this?!," I think to myself.

Then Maven blew up.

"Oh, crap," I think.

Then I look at the config file to see how to fix it. XML.

"Oh, CRAP!" I think.

I try to do a clean rebuild. Maybe a stray file got into version control,
maybe an HTTP server horked during the downloads, that sort of thing.

Maven could no longer read its own repository.

"!@#$!@$ !@#%% !@#@$@!! !@#@#@ $#!$$!@," I say out load.

And delete ANTLR. Life's too short to be stepping through a debugger for the
build tool for your build tool for you build tool.

~~~
brown9-2
Why don't you just download the binaries from the ANTLR site?

<http://www.antlr.org/download/antlr-3.2.jar> for "Complete ANTLR 3.2 jar; all
tools, runtime, etc..."

<http://www.antlr.org/download.html>

~~~
donw
Perhaps he wanted to build from source, for whatever reason?

Certainly a 'build tool' should make this, well, easy.

~~~
brown9-2
Yeah it should. And the project should make sure it's easy to build from
source as well. I just tried to download Antlr source from the site and build
it and I get errors about how they've configured a plugin which needs to
connect to their SCM but they haven't configured their part.

I can see that Maven has a sharp learning curve, and that it can be
frustrating when you want to get just one task done - I think it shines when
you are working in an environment with many projects with inter-dependencies
between them - but some blame should be pointed here at the Antlr project
authors, who haven't made sure that you could cleanly build the source on
their site.

~~~
Daniel_Newby
I wanted to give the Python target better support for characters outside the
Unicode Basic Multilingual Plane. I.e., I was smoking crack.

"I think it shines when you are working in an environment with many projects
with inter-dependencies between them"

I haven't seriously used Maven, obviously, but its basic design violates the
separation of concerns principle. A combination of projects is simply a
higher-level project, whose targets can perfectly well be created by a
Makefile that downloads them. Maven is a shining example of what happens to
people who don't understand recursion.

