How To... Start a Project - Project Descriptors | ![]() |
Module Descriptor | ||
A module is a collection of sub-projects in the same code repository. The file module.xml describes the modules used in your project and is is an enhanced version of the Gump module descriptor. This tells gump a little about your project and how to build it; the enhanced tags do not prevent Gump from using it, but add important information about the module that is given by centipede to all the build files as Ant properties.
It needs to be customised for each project. In it you can define details such as:
- CVS repository
- Bug Tracking system
- Mailing lists
- Project description
- What the project is and Why it was created
- Vendor
- License
- Credits
- Version details
- Dependencies of the project
The file below is the example module.xml file, that comes with the krysalis-project template. Documentation for most of these elements can be found on at the Gump project (specifically the Gump overview documentation). The parts that are unique to Centipede are discussed below.
<?xml version="1.0"?> <module name="krysalis-template-krysalis-project"> <url href="http://www.krysalis.org/templates/krysalis-project"/> <site hostname="krysalis.sourceforge.net" remotedir="/home/groups/k/kr/krysalis/htdocs/templates/krysalis-project"/> <cvs repository="sourceforge" host-prefix="cvs.krysalis" dir="krysalis-project" module="krysalis-template" href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/krysalis/krysalis-template/krysalis-project"/> <jars repository="maven" href="http://www.ibiblio.org/maven/"/> <description> Recomended minimum configuration for a Krysalis Project. </description> <detailed> Krysalis-project is a template for a Centipede module. It is intended to provide a "cut and paste" template for the creation of new projects. </detailed> <what> <goal>Allow new projects to be started quickly and easily when using Centipede.</goal> </what> <why> The faster it is to get working on a project the better. Since most projects have the same initial requirements in terms of directory structure and deliverables a "cut and paste" template provides a good starting point. </why> <vendor>Krysalis Community Project - krysalis.org</vendor> <licence legal="./legal"> This software is released under the Krysalis Patchy Software License 1.1_01. For detailed legal and licensing issues, please read the LICENSE.* files in the /legal directory. </licence> <credits> <credit>This software includes software developed by the Apache Software Foundation (http://www.apache.org/). </credit> </credits> <project name="krysalis-project"> <version major="0" minor="0" fix ="1" tag="alpha1-dev"/> <package>org.krysalis</package> <ant target="gump" vm="1.2"/> <work nested="build/classes"/> <home nested="build"/> <code type="java/plain" dir="src/java"/> <test type="test/junit" dir="src/test"/> <documentation type="xml/forrest" dir="src/documentation"/> </project> </module>
Centipede Specific Nodes in Module.xml | ||
jars
description
A short description of this module This is used when generating some of the automated documentaiton for the project.
detailed
A longer description of this module This is used when generating some of the automated documentaiton for the project.
what
A description of the goals of this module. There can be any number of goal nodes as children of this node, each one defining a goal of ther module.
why
The reasons for the exstence of this module.
vendor
The name of the organisation who owns and manages this module. This is used in the automated docuemnt generation process.
licence
A description of the licence terms for this module. This node also has an attribute, legal that indicates the lcoation of the directory containing legal inforamtion about the project, for example, the liences applicable to the module. This path is is relative to the project root
credits
This node can have any number of child credit nodes. Each one containing an aknowledgment to other code or projects that have been included in this module.
project
version
Indicates the version number of this code base. This node takes four attributes as follows:
- major
- The major version number, that is the x in x.y.z-tag.
- minor
- The minor version number, that is the y in x.y.z-tag.
- fix
- The fix number, that is the z in x.y.z-tag.
- tag
- The release tag, that is the tag in x.y.z-tag.
package
The java package name that is used for this project. For example, org.krysalis.
code
The code element indicates where the source code for the project is and what type of code it is. It has the following attributes:
- type
- The type of source code, currently only "java/plain" is supported, which indicates standard java code.
- dir
- The location of the source code for this project, relative to the project root.
test
The test element indicates where the source code for the project tests and resources are located. It has the following attributes:
- type
- The type of tests, currently only "test/junit" is supported, which indicates junit tests.
- dir
- The location of the test code for this project, relative to the project root.
documentation
The docuemntation element indicates where the source code for the projects docuemntation can be found. It has the following attributes:
- type
- The type of tests, currently only "xml/forrest" is supported, which indicates Forrest xdocs.
- dir
- The location of the documentation source code for this project, relative to the project root.
by Andrew C. Oliver, Ross D. Gardler