buildr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Antoine Toulme <atou...@intalio.com>
Subject Resolving
Date Tue, 02 Feb 2010 04:14:43 GMT
Hi guys,

I have given a bit of thought on the best way to do transitive dependencies.

Actually, I wrote a Buildr plugin named buildr4osgi that resolves transitive
dependencies for OSGi projects.

I learnt a few lessons while playing with concepts and implementing it:

1. Resolving is a step in your build.
You want your build to be reproducible.
So one improvement with Maven is that your Buildr build should be always
reproducible. You resolve once, and then always refer to the same artifacts.

2. There should be a file with your dependencies
The dependencies should be resolved in a file next to your Buildfile.
For Buildr4OSGi, we used a dependencies.yml with this format:

project.id
  dependencies:
  ...
  projects:
  ...

3. Projects may be dependencies too
It's not because you use transitive dependencies that you cannot use the
project next to you. You should give priority to projects sitting next to
yours over dependencies while resolving.

4. Your dependencies should be available through a method, not implied.
Never imply you are going to use the dependencies by default. You may also
want to add additional dependencies.
In Buildr4OSGi, we used the "dependencies" method, it gave something like
this:

compile.with dependencies, AXIS2, COMMONS

It felt natural and was easier to debug.

I would be ready to look into ivy4r and reuse it, or backport pieces of
Buildr4OSGi into Buildr into something rock solid.

What do you think ?

Thanks,

Antoine

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message