1 - Common Component - The ANT build script for a common component project. These typically perform the same tasks all of the time so the actual build script is basically setting properties specific to the component and then including the component-includes.xml
2 - Component includes - where all of the tasks needed for developing and releasing a common component are written. If this does something more common to any type of project, such as JavaDoc, then it just calls through to the common-build.xml ANT script
3 - (J2EE) Project - The ANT build script for a project, such as a J2EE project. This will contain project specific properties and call commonly used targets in the common-build.xml script
4 - Common Script - Where any common tasks are defined. You only need to call them with the correct properties set beforehand. These tasks will be run in the version of ANT that you have within WSAD. If the task requires a different version or is a 3rd party library then the common-external-build.xml is called to handle these
5 - Common External - Where 3rd party tasks are actually executed and/or a different version of ANT or a JRE can be invoked from
6 - ANT 1.5.1 - The minimum version of ANT that was originally needed to run the 3rd party tasks that we use.
7 - JAXB - A modified version of ANT 1.5.1 used for running the JAXB task
8 - ??? - Any other version of ANT we require. At some point new tasks will appear that will require a higher version of ANT than 1.5.1 so we can install that and direct those tasks to that ANT version
9 - JRE 1.4 - some tasks may need to be run in a different JRE version. JRE 1.3 is used within WSAD and this is used to run the ANT scripts however some tasks, such as FindBugs, require a 1.4 JRE to run
So why have such a complicated looking build system? Why have a version of ANT (1.5.1) used by the external tasks that is older than the one currently used by WSAD (1.5.3) ?
This system was designed to be flexible ... changes to the development environments and updates to the tools used should not break the system or mean re-installs to every developer machine. This system was originally started when we used WSAD 4 that included ANT 1.3. The 3rd party tasks that we wanted to use needed a newer version of ANT. We could have upgraded the ANT in the developers machines and installed each task there as well ... but what about configuration of the tasks and updates to them? Each project would have to create all of the scripts for itself as well. Updates to the WSAD version would mean reinstalling the whole lot again to each machine, so the ANT scripts, the version we wanted to use and the 3rd party tasks we wanted to use were put into one location accessible by all developers. A single place to install new tasks, new features to the scripts, and maintain. This has meant that the scripts have basically stayed the same through 3 major WSAD updates without any need for changes to the project scripts or installations and configurations on the developer machines. The extra tasks that we use, such as PMD, have been updated numerous times in the central location without the need for each developer to do anything.
In the future, we will still continue to keep the tasks updated and install any dependencies (such as a newer ANT version) and configure in one place without requiring each developer to have this done for every IDE version they use or will use.
Last Updated Monday, November 21 2005 @ 07:38 PM CST; 2,016 Hits
IRC Hacks
I am a contributor to the IRC Hacks book released by O'Reilly in 2004. I wrote a few of the hacks, some of which were about my own software - 2 about PPF and 1 about MatchEd.