ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alan Chaney <>
Subject Guidance on relationship between projects and repositories
Date Thu, 01 May 2008 18:48:06 GMT

I'm trying to work out how to configure Ivy to provide a set of 
repositories for our project builds.

I have decided that it is essential for us to have an 'enterprise' 
repository which contains our own copies of artifacts mostly obtained 
from mave repositories. I have created a separate project which allows 
me to install modules from either maven or from a local filing system.

Our projects typically have the following structure:

1. There are projects (ProjA, ProjB etc)  with several sub-projects 
where each sub-project creates a jar which have their own dependency ( A 
-> B -> C)
2. These produce 'deliverables' which are in most cases wars but in some 
cases jars. There is a second level of dependency between these 
deliverables ( eg ProjB -> ProjA)
3. The deliverables come in flavors - test, QA, production.
4. Each of the sub-projects tends to share a lot of common libraries.

My current thoughts are to have for each main project a 'common' place 
to put the 3rd party libs. This 'common' place has 3 sub directories:


This means that each sub-project would share a common set of libs. My 
reasoning behind this is that they are all going to end up in the same 
jar, so it's probably better to do that than give each sub-project its 
own libs because its then possible for different sub-projects to use 
different versions which experience indicates leads to subtle class path 

I (obviously) use ivy:resolve to get the appropriate libraries in from 
the enterprise repository and also from the local repository.

The idea is that  a developer would check out a project including all 
its sub-projects and then as they modified and tested these sub-projects 
use a 'publish-local' target to rebuild their own working version. When 
finished, they would use a 'publish' target to publish new versions of 
the deliverables back to a shared repository.

So, my questions are:
1. Does anyone see any pitfalls or drawbacks in this approach?
2. Should I use my 'enterprise' repository as the respository for our 
deliverables or should I create a separate repository for internal 
deliverables? Or does it not matter one way or the other?

At some point I intend to move to Luntbuild or similar for CI. Are there 
any steps that I should take to make it easier to migrate an ivy-based 
build system to Luntbuild?

Thanks in advance for comments. I'm begging to understand what can be 
done with Ivy - its less clear what the best practices are.


Alan Chaney

View raw message