How Best to Prepare and Serve Crow

I've been very vocal about my distaste for maven in the past.  Most of my preference for other tools is the large, spiky, opaque interface that maven offers.  Figuring out how to customize a maven build is an exercise in frustration at best.  I was talking to a maven dev (no clue how "senior" the guy was) and he couldn't answer a question I had (I think it was about finding out what plugins/targets a pom offered).  He fumbled about looking for an answer.  And that just typifies why I dislike maven so much. On the other hand, there are many things to like as well.  IDE integration has finally reached a usable point for me.  IDEA has top notch support for basing a project definition off of it, finally, which is a big win if your project has dependency changes frequently.  It also makes hetergeneous development environments much more portable among many other advantages.  Maven still has its Golden Path on which life is all rainbows and butterflies and deviating from that path is starts to look like a descent into Emyn Muil.  But still, the world is slowly moving that way in large part because the ant guys seem to have stopped any sort of evolution of their own offering.

So it's my intention to move all my stuff to maven now.  We use it at work so I'm already using it most of the time anyway.  Many of my complaints are born of frustration/ignorance of the details of the tool and there's only way to cure that.  I knew that despite all my kvetching that this day would come.  And here it is.

So I have one question for the tube generation:  what's the best way to cook crow?

Being a good citizen?

The choice of build tools is surprisingly contentious. I know I, personally, am not a huge maven fan. I've been given to explosive, vitriolic rants against it, actually. But now I'm forced to use it at work so I'm learning it more than I'd hoped to ever have to. :)  But whatever your choice of build tool is, there's one thing I think should happen that would help out so many people.  If you write some form of library to be reused by the world at large, it should get published in the maven repos.  Or maybe an ivy repo(s) if there are such centralized/public beasts.  Making it easy to find these artifacts will only help to drive adoption of a project. Whether you chose maven or ant at that point (or something else...), it becomes quite simple to find and fetch dependencies.  I use the ant tasks from the maven project to pull down my deps and then ant to build.  It works well enough for me until I run into a library that hasn't been published to a repository somewhere.  Some projects are really good about publishing their artifacts.  Other projects' devs respond with simple "not my problem" responses.  If I can't find a dependency in maven, I'm much more likely to try to find another library to use.  So uploading an artifact may not be your problem, but it's certainly not mine.  It's a good way to drive people like me to other projects, though.  But maybe you don't care about that, either.