Hi Todd,

Todd Nine wrote on Friday, March 02, 2007 5:22 PM:

> Hi all,
>   I'm created a multi project build using subversion for source
> control.  I've used CVS in the past, so I'm a bit confused as to how I
> need to layout the repository for a multiproject release in
> subversion.  Here are the two options as I see them, which one should
> I use to perform a release from the parent pom?
> 
> Option 1 (I think this is correct)
> 
> 
> myrepo  +
>              +branches
>              +tags
>              +trunk
>              +--pom.xml(parent)
>              +-- proj A (component)
>              +-- proj B (component)
> 
> Option 2 (I'm not sure how the parent pom would tag the whole
> release this way)
> 
> 
> myrepo +
>             +pom.xml
>              +Proj A(component)
>              +--branches
>              +--tags
>              +--trunk
>              +Proj B (component, same structure as proj A)

IMHO it simply depends on your release cycle. If the components from proj A+B 
share the same version I'd go with option 1. If they have an independent 
release cylce, we use a modified option 2:

myrepo
  + .links (2)
    + trunk
      + pom.xml
  + parent-pom (1)
    + trunk
      + pom.xml
  + project-A
    + trunk
      + pom.xml
  + project-B
    + trunk
      + pom.xml

1) The parent POM of the project has an own release cycle. Every component's 
POM will use it as parent (referenced simply with group and artifact id, we're 
not using the relPath). For a release you'll have to release the parent POM 
first.

2) This is a construction to enable easy check outs of a specific branch of the 
project i.e. normally the trunk. A subversion user checks out 
myrepo/.links/trunk to get the head revision of all sources. The trick is, that 
that directory contains external links to the trunks of all other modules of 
this project (parent-pom, project-A, project-B). The pom.xml in this directory 
is never released, it contains simply a modules section for the three modules 
to enable a multi module build. With this construct you're able to setup easily 
branches e.g.:

myrepo
  + .links
    + branch-2.x
      + pom.xml

The external links in "myrepo/.links/branch-2.x" will point to the individual 
branches of the module. And this is really convenient, if branch 2.x does not 
mean that every subproject has an own branch (you might be able to use a 
released version - therefore no need to build the component that has no changes 
in the branch).

This setup works quite well for us.

- Jörg

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to