ReadySET design-src-org

InfoDabble > ReadySET design-src-org
Jump to: navigation, search

Contents

[edit] Design > Source Code Organization and Build System

[edit] Release Information

Project:

PROJECTNAME

Internal Release Number:

X.Y.Z

Related Documents:

Example build.xml for Tomcat

[Ant manual]

LINKS TO RELEVANT STANDARDS

LINKS TO OTHER DOCUMENTS

[edit] Overview

TODO: Answer the questions below to help you define your source code organization and build process. Some example text is provided. Add or delete text as needed. E.g., not all projects try to be platform independent.

What are the most important facts that a developer should know about this source code organization and build system?
It roughly follows the standard proposed in the Tomcat documentation and is very similar to the organization used on many open source projects at the Apache Software Foundation.
What are the ranked goals of this source code organization and build system?
  1. Separation of files by type
  2. Separation of version-controlled files from files generated by the build process
  3. Compatibility with standard build processes
  4. Platform independence

[edit] Key Directories and Files in Developer Working Copies

TODO: Describe the purpose of each directory that will appear in a developer's work copy, also include any files that are important to the overall structure or build process.

Path

VC

Description

build.xml

Yes

Build file

build.properties

Yes

Build properties file

src/

Yes

Source code

src/java/

Yes

Java source code

src/java/packages/

Yes

Java source code of classes in each package

src/java/packages/test/

Yes

Java source code of unit tests for classes in each package

web/

Yes

HTML and JSP files

web/css/

Yes

CSS files, if any

web/images/

Yes

Image files, if any

web/WEB-INF/web.xml

Yes

Java web application configuration file

conf/

Yes

Configuration files, if any

data/

Yes

Initial data to load into database and/or file system, if any

lib/

Yes

Libraries reused by this project, if any

scripts/

Yes

Command-line utility scripts used by this project, if any

www/

Yes

Project documents (e.g., overview, plan, requirements, and design)

build/

No

Output of build process

build/WEB-INF/classes/

No

Compiled code output by build process

dist/docs/api/

No

API documentation output from build process

dist/PROJECTNAME-VERSION.war

No

Deployable web archive of classes and config files generated by build process

[edit] Build Targets

TODO: Describe the build targets that developers will use in daily development. The examples below should fit most projects.

Target

Description

compile = default

Compiles Java source code and creates .class files under the "build" directory.

dist

Packages the system for distribution/deployment to servers or end users. Specifically, it creates .war archive of compiled classes and configuration files.

install

Places executable code into location where it will actually be executed. Specifically, it copies .war file into Tomcat's webapps directory for use. You must then restart Tomcat or use the "reload" link in the Tomcat Manager.

javadoc

Generates Java API documentation under "build/docs/api/".

clean

Deletes files generated by previous build commands. Files under version control are not touched.

[edit] Build Configuration Options

Property

Description

app.name

The name of this application. This should be one short word. Used in the name of resulting package files. Specifically, the .war file. And, it will be used to access the application via http://localhost:8080/APP.NAME/

app.version

Version number of this release. Used in the name of resulting package files. Specifically, the .war file.

webapps.path

Path to the Tomcat "webapps" directory. Defaults to C:\Program Files\Apache Group\Tomcat 4.1\webapps\

These build system properties can be modified by editing the build.properties file.

[edit] Source Code Organization and Build System Checklist

Separation of files by type
Are files separated by type?: Yes. Except that application JSP and HTML files are in the same directory, which is convenient because sometimes we change an HTML file to be a JSP file.
Separation of version-controlled and non-version controlled files
To what extent has this been achieved?: It has been achieved. Everything is under version control except for the "build" directory. No step in the build process should create or modify any file in any other directory.
Compatibility with standard build processes
To what extent has this been achieved?: So far, so good. We can use build.xml files that are very close to the examples that come with Ant. One difference is that we keep our technical documentation under "www" rather than under "docs". Also, we have avoided the use of custom ant tasks.
Platform independence
To what extent has this been achieved?: We are using Ant, which is itself platform independent. The names of the files and directories should work across platforms because they do not rely on case-sensitive names. We assume that the utility scripts in the "scripts" directory support all needed platforms and we have not created directories for different versions of these files aimed at specific platforms.
Have these implementation decisions been communicated to the development team and other stakeholders?
Yes, everyone understands. Feedback is welcome.

No, this is a risk that is noted in the Risk Management section.

TODO: Check for words of wisdom and discuss ways to improve this template. Or, evaluate the ReadySET Pro professional source code organization template.

Company Proprietary

Copyright © 2003-2004 Jason Robbins. All rights reserved. License terms. Retain this copyright statement whenever this file is used as a template.