ビルドには Subversion と Nant を使用します。複数のサブプロジェクトに依存するメイン プロジェクトがあります。サブプロジェクトは、Subversion 内の個別のプロジェクトとして存在します。
私の質問は: メイン プロジェクトの nant ビルド スクリプトは、参照されているすべてのサブ プロジェクトとそれ自体をビルドする必要がありますか? または、サブプロジェクトは自分自身をビルドする方法を知っていて、メインのビルド ファイルからサブプロジェクトのビルド ファイルを何らかの方法で呼び出し、すべての出力をメイン プロジェクトのビルド出力にアセンブルしますか?
現在、mainproject ビルド ファイルですべてのサブプロジェクトをビルドしています。つまり、ビルド ファイル内の各サブプロジェクトに 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
...