I had a similar experience when I started needing transitive resolution, but went a different route. My solution is a wrapper around Maven's dependency resolution framework, Aether. I have a hybrid Buildr setup, where Buildr can load a pom to get all the dependencies but Buildr does all the heavy lifting. The additional perk is Eclipse is happy using the pom to map out the project.

On 10/28/2011 05:04 AM, Peter Tillotson wrote:
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

Reply via email to