Forrestbot v2 ============= Introduction ------------ This directory contains an attempt at rewriting the Forrestbot using vanilla Ant 1.6, making extensive use of the task. Motivation ---------- The old Forrestbot works by generating an Ant script with XSLT. This script calls targets in templates.build.xml, which in turn calls targets in forrest.build.xml. This scheme has two problems: - With three layers of indirection, this gets very hard to debug - It's inflexible. We cannot define project-specific tasks. We very much need this missing flexibility, because a lot of projects (notably Cocoon) call Forrest after customising the xdocs in their own Ant scripts. Design ------ Instead, Forrestbot v2 uses Ant 1.6's to define a hierarchy of scripts: forrest.build.xml | V forrestbot.xml | V xml-forrest.xml, xml-fop.xml, cocoon-site.xml, jakarta-poi.xml, ... forrestbot.xml runs , making it a logical superset of forrest.build.xml. Scripts for building each Forrest-using projects are likewise supersets of forrestbot.xml The nice thing about is that overriding scripts can: - Redefine properties. Our project scripts can all redefine details like the CVS location, where confirmation mail should go to, etc. - Override targets. Two uses: - Customize the forrestbot workflow. Want to get a project's contents locally instead of from CVS? Just override the 'getsrc' method: Similarly for 'deploy' (local, ftp, scp) and 'notify' (email or just ), - Project-specific stuff. Cocoon needs to copy lib/jars.xml to the xdocs directory, xml-cocoon.xml would override the 'get-src' target from forrestbot.xml, and do the copy (or invoke a Cocoon script to do it). Status ------ *Very* alpha. Requires the latest Ant, which I don't think Forrest's is. Only a few project scripts implemented. -- $Date: 2003/10/20 11:43:58 $