| <!-- |
| This build.xml snippet contains Forrest targets for Ant 1.5+. It checks that |
| the user has set ${forrest.home}, either in one of: |
| build.properties |
| project.properties |
| ant.properties |
| .ant.properties |
| or with the FORREST_HOME environment variable, and prints an informative error |
| message if not found. |
| |
| Usage: |
| 1) Copy this file to somewhere in your project. |
| 2) Add the following to the top of your project's Ant build.xml script |
| (adjusting the path): |
| |
| <!DOCTYPE project [ |
| <!ENTITY forrest-targets SYSTEM "file:./forrest-targets.ent"> |
| ]> |
| |
| 3) Before the closing '</project>' in your build.xml, add this: |
| |
| &forrest-targets; |
| |
| This is like expanding a macro: it pulls in the contents of this file. |
| |
| A minimal build.xml would thus be: |
| |
| <!DOCTYPE project [ |
| <!ENTITY forrest-targets SYSTEM "file:./forrest-targets.ent"> |
| ]> |
| |
| <project default="site"> |
| &forrest-targets; |
| </project> |
| --> |
| |
| <target name="site" depends="forrest.init" description="Generates static HTML documentation"> |
| <ant antfile="${forrest.home}/forrest.antproxy.xml" target="site"/> |
| </target> |
| |
| <target name="webapp" depends="forrest.init" description="Generates an unpackaged webapp of the website"> |
| <ant antfile="${forrest.home}/forrest.antproxy.xml" target="webapp"/> |
| </target> |
| |
| <target name="war" depends="forrest.init" description="Generates a .war file containing the website"> |
| <ant antfile="${forrest.home}/forrest.antproxy.xml" target="war"/> |
| </target> |
| |
| <target name="validate" depends="forrest.init" description="Validates XML documentation files"> |
| <ant antfile="${forrest.home}/forrest.antproxy.xml" target="validate"/> |
| </target> |
| |
| <target name="forrest.init" depends="forrest.sethome, forrest.home.defined"/> |
| |
| <target name="forrest.sethome" depends="forrest.loadenv, |
| forrest.checkenv, forrest.checkhome, forrest.check-build.properties, |
| forrest.check-project.properties, forrest.check-ant.properties, |
| forrest.check-.ant.properties"/> |
| |
| <target name="forrest.loadenv" unless="forrest.home.present"> |
| <property environment="env"/> |
| <echo level="verbose">Forrest: Got ${env.FORREST_HOME}</echo> |
| </target> |
| |
| <target name="forrest.checkenv" if="env.FORREST_HOME"> |
| <echo level="verbose">Found $FORREST_HOME..</echo> |
| <property name="forrest.home" location="${env.FORREST_HOME}"/> |
| <echo level="verbose">forrest.home set to ${forrest.home}</echo> |
| <available file="${forrest.home}" type="dir" property="forrest.home.present"/> |
| </target> |
| |
| |
| <target name="forrest.checkhome"> |
| <available file="${forrest.home}" type="dir" property="forrest.home.present"/> |
| <available file="build.properties" type="file" property="build.properties.present"/> |
| <available file="project.properties" type="file" property="project.properties.present"/> |
| <available file="ant.properties" type="file" property="ant.properties.present"/> |
| <available file=".ant.properties" type="file" property=".ant.properties.present"/> |
| </target> |
| |
| <!-- No we can't extract the commonalities below into an antcall'ed target, |
| because it wouldn't be able to set forrest.home --> |
| <target name="forrest.check-build.properties" unless="forrest.home.present" |
| if="build.properties.present"> |
| <echo level="verbose">Forrest: Checking build.properties..</echo> |
| <loadproperties srcfile="build.properties"> |
| <filterchain> |
| <linecontains> |
| <contains value="forrest.home"/> |
| </linecontains> |
| </filterchain> |
| </loadproperties> |
| <available file="${forrest.home}" type="dir" property="forrest.home.present"/> |
| |
| </target> |
| |
| <target name="forrest.check-project.properties" unless="forrest.home.present" |
| if="project.properties.present"> |
| <echo level="verbose">Forrest: Checking project.properties..</echo> |
| <loadproperties srcfile="project.properties"> |
| <filterchain> |
| <linecontains> |
| <contains value="forrest.home"/> |
| </linecontains> |
| </filterchain> |
| </loadproperties> |
| <available file="${forrest.home}" type="dir" property="forrest.home.present"/> |
| </target> |
| |
| <target name="forrest.check-ant.properties" unless="forrest.home.present" |
| if="ant.properties.present"> |
| <echo level="verbose">Forrest: Checking ant.properties..</echo> |
| <loadproperties srcfile="ant.properties"> |
| <filterchain> |
| <linecontains> |
| <contains value="forrest.home"/> |
| </linecontains> |
| </filterchain> |
| </loadproperties> |
| <available file="${forrest.home}" type="dir" property="forrest.home.present"/> |
| </target> |
| |
| <target name="forrest.check-.ant.properties" unless="forrest.home.present" |
| if=".ant.properties.present"> |
| <echo level="verbose">Forrest: Checking .ant.properties..</echo> |
| <loadproperties srcfile=".ant.properties"> |
| <filterchain> |
| <linecontains> |
| <contains value="forrest.home"/> |
| </linecontains> |
| </filterchain> |
| </loadproperties> |
| <available file="${forrest.home}" type="dir" property="forrest.home.present"/> |
| </target> |
| |
| <target name="forrest.home.defined" depends="forrest.sethome" unless="forrest.home.present"> |
| <property name="path" value="${user.home}/xml-forrest/build/dist/shbat"/> |
| <pathconvert targetos="windows" property="winpath"> |
| <path> |
| <pathelement location="${path}"/> |
| </path> |
| </pathconvert> |
| <pathconvert targetos="unix" property="unixpath"> |
| <path> |
| <pathelement |
| location="${path}"/> |
| </path> |
| </pathconvert> |
| |
| <echo> |
| ---------------------------------------------- |
| To run this target, you need Forrest installed. |
| Please do the following: |
| |
| export CVSROOT=:pserver:anoncvs@cvs.apache.org:/home/cvspublic |
| cvs checkout xml-forrest |
| cd xml-forrest |
| build (Windows) |
| ./build.sh (Unix) |
| |
| Then either: |
| |
| - Set FORREST_HOME as the Forrest build instructions describe |
| - Create a build.properties, with the forrest.home property pointing to |
| the forrest shbat directory, eg: |
| |
| forrest.home=${winpath} (Windows) |
| forrest.home=${unixpath} (Unix) |
| |
| (adjusting the path according to where your xml-forrest is) |
| ---------------------------------------------- |
| </echo> |
| <fail message="Need to define $${forrest.home}"/> |
| </target> |