使用 subversion 和 Nant 进行构建。我有一个依赖于几个子项目的主项目。子项目作为单独的项目存在于 subversion 中。
我的问题是: 主项目中的 nant 构建脚本是否应该构建所有引用的子项目及其本身?或者子项目是否知道如何构建自己,我以某种方式从主构建文件中调用子项目构建文件,并以某种方式将所有输出组装到主项目构建输出中?
我目前有主项目构建文件构建所有子项目。也就是说,我对构建文件中的每个子项目都有 nant 目标。但是,这似乎在主构建文件和子项目之间建立了紧密的耦合。如果我能说“子项目知道如何构建自己”并要求他们从主项目构建自己并组装输出,那就太好了。
作为参考,我的存储库如下所示:
/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
我正在使用 subversion svn-externals 属性引入子项目。所以我的工作副本是这样的:
/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
...