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