This file describes how to create local additions to JMeter.

Create a new directory for the sources:

cd JMETER_HOME

mkdir addons

Copy addons.xml into JMETER_HOME

To build the addons, run ant as follows:

ant -buildfile addons.xml

This will compile the sources to build/addons/...

If successful, it will also create the jar file:

JMETER_HOME/lib/ext/ApacheJmeter_addons.jar

As the filename of this jar is alphabetically earlier,
any classes in it will be used in preference to existing JMeter classes.

This allows the addons to be used to supply new functionality as well
as overriding existing functionality, without needing to rebuild JMeter.

Such addons are intended mainly to be used locally - for example if you
have developed any new code that is only relevant to your organisation.

It can also be useful for developing general purpose add-ons that are
intended for general release. Once tested, these can be moved into one of 
the normal JMeter source directories.

N.B. The build file assumes that JMeter has been built separately, as
JMeter classes are resolved from jars in the lib and lib/ext directories.
