What is an ideal source structure for an agile project

Even after years of Subversion, this is one of the most common questions asked by agile teams. This is also a topic of religious discussion. Proposed here is a time and tested simple project structure that you can use for any Java, .NET project. If you are using Grails or Rails, the tool itself provides a similar code structure.

$\{CompanyName}
\{ProductName}
\trunk
\docs
\lib
\build
\src
\. . . { project folders }
\database
\test
\. . . { project folders }
\tools
\. . . { project folders }
\target
\releases
\tools

{ CompanyName } –This is your root name of your company, brand of product.
{ProductName}

trunk– This is the root branch, where new feature development will occur.This is where all developers will check in on a daily basis

trunk/src – All source goes here.

trunk/lib– This folder contains binaries, jar files referenced in test projects, as well as support applications (
junit.jar, nunit.framework.dll, nant, ant.jar)

trunk/build — This folder contains support scripts necessary to build the main branch.Also here is where you could store your build scripts for continuous integration.

trunk/docs — This is where any necessary docs per definition of done will go.

trunk]database — This folder contains all versioned SQL scripts needed to build the various databases.

trunk/test — This folder contains all test projects will go. You may want to keep unit tests here or with the source tree and then just exclude it from the release build.

trunk/tools — This folder contains all projects that are support tools, such as command line utilities.

trunk/target — Source from all the internal projects in source should compile to a common target folder.

/branches — This folder contains release branches, which will be branched from trunk for every release.

/tools — This folder contains any utility applications and scripts.

Advertisements