tnine wrote on Thursday, March 15, 2007 5:53 PM:

> Hi Jörg,
>   Thanks for your reply.  I have a couple of questions about
> your layout.
> 
> 1. You have two "parent" poms.  One in a sub directory for
> performing a
> release, and another at the top level to link all modules together for
> dependency resolution, is this correct?

Yes. But we call the one in the parent directory builder POM, since it is not 
part of the release - it's even never released at all. It is simply a POM to 
combine several modules ... nothing more. The "real" parent POM is the one that 
is referenced with group and artifact id in the individual modules.

> 2. You say your ".links/trunk" points to the trunk of every
> sub project.
> How do I get that into subversion?  I don't quite understand
> how to do that.

See the described structure from below. The myrepo/.link/trunk directory 
contains a "svn:externals" property with links to the trunk of the individual 
(sub)modules e.g.

============= %< ===========
parent-pom myrepo/parent-pom/trunk
project-A myrepo/project-A/trunk
project-B myrepo/project-B/trunk
============= %< ===========

So if you checkout myrepo/.link/trunk subversion will automatically checkout 
the external references also and you end up with the subdirectories parent-pom, 
project-A and project-B.

- Jörg

> 
> Thanks,
> Todd
> 
> 
> Jörg Schaible wrote:
>> 
>> 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]

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

Reply via email to