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]