Clover sources are organised into individually build-able modules.
Each module lives in a separate top-level directory with its own build file. The rough template is:
The target names in build files for each module are prefixed by the name of the module, allowing
modules to import other modules build files and express target dependencies in the normal Ant
way. This naming convention is important for the operation of the build. Each
build.xml is designed to be location independent, so that imported targets can
still work from importing build files. Because modules use import to express dependency this allows
you to run the targets of any module up the dependency chain from the local module's build.
Every module needs the following minimum targets:
"deliverable" modules are those that produce an end product, they have the following extra targets
All modules import a common set of properties and targets from the file
This file contains the version information for all deliverable packages (note that most modules
import this indirectly, by importing other modules that in turn import
A global convenience build file
/build.xml provides global build/test/report/clean
targets, as well as exposing all targets from all modules.
- If you are working on a particular module, you can either call build targets on the local module build file or from the global build file.
- You can run tests locally using
<module-name>.testor globally using
global.test. In both cases the properties
test.excludescan be used to filter tests of interest.
- All output from a module build is put under
There is also a global /target/dependencies directory which is used to cache third party libraries or a repackaged clover.jar
- Before checking in, you should run at least
- Some modules have a
<module-name>.installconvenience target to build and install the module.