Using subversion and Nant for building. I have a main project that depends on several sub-projects. The sub-projects exist as separate projects inside subversion.
My question is: Should the nant build script in the main project build all the referenced sub projects and itself? Or do the subprojects know how to build themselves and I somehow call the subproject build files from the main build file and somehow assemble all the output into the main projects build output?
I currently have the mainproject build file build all the subprojects. That is, I have nant targets for each subproject in the build file. However, this seems to create a tight coupling between the main build file and the subprojects. It would be nice if I could just say "sub projects know how to build themselves" and ask them to build themselves from the main project and assemble the output.
For reference, my repository looks like:
/Repo
/MainProject
/trunk
/doc <-- documentation
/lib <-- binary-only DLLs (usually 3rd party)
/src <-- source code for MainProject
/svn-externals <-- hold references to other projects in repository
...
/ClassLib1
/trunk
/doc
/lib
/src
/svn-externals
...
/ClassLib2
/trunk
/doc
/lib
/src
/svn-externals
...
/ClassLibCommon
/trunk
/doc
/lib
/src
/svn-externals
I'm pulling in the sub-projects using the subversion svn-externals property. So my working copy is like this:
/MainProject
/build
/doc
/lib
/src
/MainProject
/svn-externals
/ClassLib1 <-- svn external to svn://xyz/repo/ClassLib1/trunk
/doc
/lib
/src
/svn-externals
/ClassLibCommon <- svn external to svn://xyz/repo/ClassLibCommon/trunk
...
/ClassLib2 <-- svn external to svn://xyz/repo/ClassLib2/trunk
/doc
/lib
/src
/svn-externals
/ClassLibCommon <- svn external to svn://xyz/repo/ClassLibCommon/trunk
...