About a year ago I started using buildr. I needed to move from Ant, and
integrate with maven projects, but had always found maven deeply frustrating I
thought I'd share my experiences of using buildr and my recommendations.
But first why not maven:
* Always seems to need internet connection, either for plugins or
repositories
* I can never remember the correct incantation
* XML is the wrong tool for a build system
Why buildr:
* Repository setting and dependency definitions are clean and simple
* With jruby I can check the whole lot into source control, so everyone
has a working build plugins and all
* I can drop back to rake / ruby when needed
* I can set http_proxy in a file for everyone, somewhere obvious
So here is my big problem, transitive dependencies management to my mind is
broken. I say this because:
* Built in transitive has had a tendency to leak test dependencies
through to run and compile time dependencies
* No conflict resolution is done so I have 4 versions of commons logging
* Transitive off by default is okay, but I still need to resolve
versions
* Transitive dependencies are not fully compliant with the some pom
features eg (${project.groupId})
buildr-dependency-extensions
* Does conflict resolution, but suffers from the pom loading features
above
* There is also a race condition that somehow stops transitive
dependencies getting in packaged war
ivy4r
* Great - ivy has good compliance, but
* I need lots of hard to read XML, and proxy settings are back to
environment variables
Okay so what are my recommendations:
* Transitive off by default is fine, but conflict resolution is needed
across all (transitive and none) dependencies with versions I define dominating
* Needs to comply with pom features, without full repository
integration the build is broken
* Ivy4r seems to be a good choice, I suggest getting the wrapper
written so that your elegant repository, proxy and definitions can be handed
off via the transitive call to ivy
* buildr-dependency-extensions - conflict resolution is a good start
Apologies for the long email but thought I'd cover the results of a few days
fighting with dependency management in buildr et.
man thanks
p