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
