blob: bfa4d6ee9e5d91e65995d7087ffea13d820212b8 [file] [log] [blame]
<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project default="jar" basedir="." name="Forrest build file">
<description>
Build system for Apache Forrest. Run the build script: build.bat or build.sh
</description>
<!-- Global properties for taskdef ... -->
<property name="forrest.home" location=".."/>
<property name="forrest.ant.lib-dir" location="${forrest.home}/tools/ant/lib"/>
<!-- Defintion of optional but useful targets ... -->
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<fileset dir="${forrest.ant.lib-dir}" includes="ant-contrib-*.jar" />
</classpath>
</taskdef>
<target name="init">
<tstamp>
<format property="YEAR" pattern="yyyy" locale="en"/>
</tstamp>
<xmlproperty file="status.xml" prefix="xstatus" keeproot="false" collapseAttributes="true" />
<property name="build.compiler.emacs" value="on"/>
<property name="build.compiler.warnings" value="true"/>
<property name="build.compiler.pedantic" value="false"/>
<property name="build.compiler.depend" value="true"/>
<property name="build.compiler.fulldepend" value="true"/>
<property name="build.compiler.debug" value="on"/>
<property name="build.compiler.optimize" value="off"/>
<property name="build.compiler.deprecation" value="on"/>
<property name="build.compiler.nowarn" value="on"/>
<property name="build.compiler.type" value="classic"/>
<property name="build.compiler.vm" value="1.5"/>
<property name="name" value="apache-forrest"/>
<property name="forrest.version" value="0.10-dev"/>
<property name="forrest.core" location="."/>
<property name="java.dir" location="java"/>
<property name="plugins.dir" location="${forrest.home}/plugins"/>
<property name="build.dir" location="${forrest.home}/build"/>
<property name="build.docs" location="${build.dir}/docs"/>
<property name="build.classes" location="${build.dir}/classes"/>
<property name="dist.dir" location="${build.dir}/dist" />
<property name="dist-shbat.dir" location="${dist.dir}/shbat" />
<property name="tools.dir" location="${forrest.home}/tools"/>
<property name="tools.jar" location="${java.home}/../lib/tools.jar"/>
<available file="${tools.jar}" property="tools.jar.present"/>
<property name="src-fresh-site" location="${forrest.home}/main/fresh-site"/>
<property name="forrestbot.dir" location="${forrest.home}/tools/forrestbot"/>
<mkdir dir="${build.dir}"/>
<buildnumber file="${build.dir}/build.number"/>
<echo level="info">
--------------------------------------------------------------
Using ${ant.version}
Build file ${ant.file}
Use 'build.[sh|bat] -projecthelp' to see other options.
Build system home ${ant.home}
Build number ${build.number}
Project Name ${ant.project.name}
Java Version ${ant.java.version}
Timestamp ${DSTAMP}${TSTAMP}
This is: ${name} ${forrest.version}
--------------------------------------------------------------
</echo>
<path id="classpath">
<fileset dir="${forrest.home}/lib" includes="**/*.jar"/>
<fileset dir="${tools.dir}/jetty" includes="servlet*.jar"/>
<pathelement location="${tools.jar}"/>
</path>
</target>
<target name="clean" depends="init" description="Delete all generated files">
<delete dir="${build.dir}"/>
<delete dir="${forrestbot.dir}/logs"/>
<delete dir="${forrestbot.dir}/work"/>
<delete dir="${forrestbot.dir}/build"/>
<delete dir="${forrestbot.dir}/sites"/>
<delete dir="${forrestbot.dir}/webapp/target"/>
<delete dir="${forrestbot.dir}/webapp/maven.log"/>
<delete dir="webapp/WEB-INF/logs"/>
</target>
<target name="dist-clean" depends="init, clean"
description="Delete all non-forrest files (*.settings, *.bak, *~)">
<delete dir="${forrestbot.dir}/*.settings"/>
<delete file="**/*.bak"/>
<delete file="**/*~"/>
</target>
<!-- =================================================================== -->
<!-- Make release distributions -->
<!-- =================================================================== -->
<target name="release-dist" depends="init, dist-clean, dist-shbat"
description="Makes release distributions">
<property name="release-name-bin" value="${name}-${forrest.version}"/>
<!-- Prepare *.tar.gz for "lf" eol-style systems -->
<!-- FIXME: 2007-04-11
Leaving this alone. fixcrlf seems to mess with some images and jar files.
<fixcrlf eol="lf" srcdir="${dist-shbat.dir}">
<exclude name="**/*.bat"/>
<exclude name="**/*.jar"/>
</fixcrlf>
-->
<tar longfile="gnu" compression="gzip"
destfile="${dist.dir}/${release-name-bin}.tar.gz" >
<tarfileset prefix="${release-name-bin}" dir="${dist-shbat.dir}"
username="forrest" group="forrest">
<exclude name="**/*.sh"/>
<exclude name="**/ant"/>
<exclude name="**/forrest"/>
</tarfileset>
<tarfileset prefix="${release-name-bin}" dir="${dist-shbat.dir}"
mode="755" username="forrest" group="forrest">
<include name="**/*.sh"/>
<include name="**/ant"/>
<include name="**/forrest"/>
</tarfileset>
</tar>
<checksum file="${dist.dir}/${release-name-bin}.tar.gz" algorithm="md5" forceOverwrite="true" />
<checksum file="${dist.dir}/${release-name-bin}.tar.gz" algorithm="sha1" forceOverwrite="true" />
<!-- Prepare *.zip for "crlf" eol-style systems -->
<!-- FIXME: 2007-04-11
Leaving this alone. fixcrlf seems to mess with some images and jar files.
<fixcrlf eol="crlf" srcdir="${dist-shbat.dir}">
<exclude name="**/*.sh"/>
<exclude name="**/*.jar"/>
</fixcrlf>
-->
<zip
file="${dist.dir}/${release-name-bin}.zip" >
<zipfileset dir="${dist-shbat.dir}" prefix="${release-name-bin}"/>
</zip>
<checksum file="${dist.dir}/${release-name-bin}.zip" algorithm="md5" forceOverwrite="true" />
<checksum file="${dist.dir}/${release-name-bin}.zip" algorithm="sha1" forceOverwrite="true" />
</target>
<!-- =================================================================== -->
<!-- Make all known distributions -->
<!-- =================================================================== -->
<target name="dist"
description="Makes all the known incarnations of forrest"
depends="clean,dist-shbat" />
<!-- =================================================================== -->
<!-- Use xmlformat on various xml-type files -->
<!-- =================================================================== -->
<!-- Notes:
You need 'xmlformat' locally installed.
Change the fileset/@dir to the tree that you want to clean.
If you encounter invalid xml, uncomment the -v (not xmlformat job to validate).
Remove any build directories in a tree before running.
-->
<target name="xmlformat" depends="init">
<apply executable="xmlformat" parallel="false" verbose="yes">
<arg value="-f${forrest.home}/etc/xmlformat.conf"/>
<arg value="-i"/>
<!--
<arg value="-v"/>
-->
<srcfile/>
<fileset dir="${forrest.home}/etc/test-whitespace">
<patternset>
<include name="**/*.xml"/>
<include name="**/*.xsl"/>
<include name="**/*.xslt"/>
<include name="**/*.xmap"/>
<include name="**/*.jx"/>
<include name="**/*.ft"/>
<include name="**/*.fv"/>
<include name="**/*.html"/>
<include name="**/*.rdf"/>
<include name="**/*.xcat"/>
<include name="**/*.xhtml"/>
<include name="**/*.xhtml2"/>
<include name="**/*.xxe"/>
</patternset>
</fileset>
</apply>
</target>
<target name="xmlformat-single" depends="init">
<!-- Notes:
You need 'xmlformat' locally installed.
Change the last arg to be your single file.
See other notes above.
-->
<exec dir="${build.dir}" executable="xmlformat">
<arg line="-f${forrest.home}/etc/xmlformat.conf"/>
<arg line="-i"/>
<!--
<arg line="-v"/>
-->
<arg line="${forrest.home}/etc/test-whitespace/test-1.xml"/>
</exec>
</target>
<!-- =================================================================== -->
<!-- Test tidy.sf.net on a single xml-type file -->
<!-- See also etc/tidy-xml.pl -->
<!-- FIXME: We use 'xmlformat' instead. See above and FOR-644. -->
<!-- =================================================================== -->
<target name="tidy-xml-file" depends="init">
<exec dir="${build.dir}" executable="tidy">
<arg line="-config ${forrest.home}/etc/tidy-config.txt"/>
<arg line="${forrest.home}/etc/test-whitespace/test-1.xml"/>
</exec>
</target>
<!-- =================================================================== -->
<!-- Validate the important core configuration files -->
<!-- =================================================================== -->
<target name="validate-config" depends="init"
description="Validate the important core configuration files">
<if>
<available file="${build.dir}/plugins"/>
<then>
<dirset dir="${build.dir}/plugins" id="installed-plugins">
<include name="*"/>
<exclude name="lib"/>
</dirset>
<pathconvert pathsep=", " property="installed-plugins" refid="installed-plugins">
<mapper type="flatten"/>
</pathconvert>
</then>
<else>
<property name="installed-plugins" value="None"/>
</else>
</if>
<echo level="info">Installed plugins: ${installed-plugins}</echo>
<!-- FIXME allow switch if="validate.config" -->
<taskdef name="jing" classname="com.thaiopensource.relaxng.util.JingTask">
<classpath>
<fileset dir="${forrest.home}/lib/core" includes="*.jar" />
</classpath>
</taskdef>
<!-- skinconf.xml -->
<echo level="info" message="validating **/skinconf.xml ..."/>
<xmlvalidate failonerror="true" lenient="no" warn="yes">
<xmlcatalog id="xcat">
<catalogpath>
<pathelement
location="${forrest.core}/webapp/resources/schema/catalog.xcat"/>
</catalogpath>
</xmlcatalog>
<fileset dir="${forrest.core}/fresh-site"
includes="**/skinconf.xml" />
</xmlvalidate>
<!-- All stylesheets **/*.xsl -->
<echo level="info" message="validating stylesheets **/*.xsl ..."/>
<jing rngfile="${forrest.core}/webapp/resources/schema/relaxng/xslt.rng">
<fileset dir="${forrest.core}" includes="**/*.xsl"/>
<fileset dir="${tools.dir}" includes="**/*.xsl"/>
</jing>
<!-- sitemap.xmap -->
<!-- commented out see http://issues.apache.org/bugzilla/show_bug.cgi?id=33378
<echo level="info" message="validating **/sitemap.xmap ..."/>
<jing rngfile="${forrest.core}/webapp/resources/schema/relaxng/sitemap-v06.rng">
<fileset dir="${forrest.core}/webapp/" includes="*.xmap"/>
</jing>
-->
<!-- book.xml -->
<!-- FIXME: Need Norm Walsh catalog entity resolver or Jeff's DoctypeChanger.
<echo level="info" message="validating **/book.xml ..."/>
<jing rngfile="${forrest.core}/resources/schema/relaxng/book-v01.rng">
<fileset dir="${forrest.core}" includes="**/book.xml"/>
</jing>
-->
</target>
<target name="dist-shbat"
depends="init, jar, validate-config" >
<!-- fresh drop-off location for the distribution -->
<delete dir="${dist-shbat.dir}" />
<mkdir dir="${dist-shbat.dir}" />
<echo level="info">Copy Forrest core files from ${forrest.home}</echo>
<copy todir="${dist-shbat.dir}">
<fileset dir="${forrest.home}" >
<exclude name="admin/**"/>
<exclude name="build/**"/>
<exclude name="etc/**"/>
<exclude name="whiteboard/**"/>
<exclude name="plugins/**"/>
<!-- exclude some tools that are not yet ready to be bundled -->
<exclude name="examples/**"/>
<exclude name="tools/eclipse/**"/>
<exclude name="tools/logos/**"/>
<!-- testing removal of tools/anttasks FOR-911 -->
<exclude name="tools/anttasks/**"/>
</fileset>
</copy>
<echo level="info">Copy plugin related files from ${plugins.dir}</echo>
<copy todir="${dist-shbat.dir}/plugins">
<fileset dir="${plugins.dir}" >
<include name="plugins.xml"/>
<include name="build.xml"/>
<include name="pluginTemplate/**"/>
<include name="org.apache.forrest.plugin.output.pdf/**"/>
</fileset>
</copy>
<echo level="info">Copy whiteboard plugin related files</echo>
<copy todir="${dist-shbat.dir}/whiteboard/plugins">
<fileset dir="${forrest.home}/whiteboard/plugins" >
<include name="whiteboard-plugins.xml"/>
<include name="build.xml"/>
</fileset>
</copy>
<echo level="info">Copy forrest.jar</echo>
<copy todir="${dist-shbat.dir}">
<fileset dir="${forrest.home}" >
<include name="build/xml-forrest.jar"/>
</fileset>
</copy>
<echo level="info">Copy some miscellaneous stuff</echo>
<copy todir="${dist-shbat.dir}">
<fileset dir="${forrest.home}" >
<include name="etc/README.txt"/>
<include name="etc/RELEASE*.txt"/>
<include name="etc/AnsiColorLogger.properties"/>
<include name="etc/publishing_our_site.txt"/>
<include name="etc/xmlformat.conf"/>
</fileset>
</copy>
<!-- Fix bin/ permissions -->
<fixcrlf eol="crlf" srcdir="${dist-shbat.dir}/bin" includes="*.bat"/>
<fixcrlf eol="lf" srcdir="${dist-shbat.dir}/bin" excludes="*.bat"/>
<chmod dir="${dist-shbat.dir}/bin" perm="ugo+rx" excludes="*.bat"/>
<!-- Fix ant/bin/ permissions -->
<fixcrlf eol="crlf" srcdir="${dist-shbat.dir}/tools/ant/bin" includes="*.bat"/>
<fixcrlf eol="lf" srcdir="${dist-shbat.dir}/tools/ant/bin" excludes="*.bat"/>
<chmod dir="${dist-shbat.dir}/tools/ant/bin" perm="ugo+rx" excludes="*.bat"/>
<echo level="info">
*-----------------------------------------------------------------
| installation notice
*-----------------------------------------------------------------
| You have succesfully built the shell-bat distribution of Forrest.
| Please find it at: ${dist-shbat.dir}
| Please copy the contents to the install directory of your choice
| Please have the environment variable FORREST_HOME point to
| ${dist-shbat.dir}
| It is recommended to add
| unix: $FORREST_HOME/bin: to your $PATH
| win: %FORREST_HOME%\bin; to your %PATH%
| Calling
| unix: $FORREST_HOME/bin/forrest -projecthelp
| win: %FORREST_HOME%\bin\forrest -projecthelp
| will list options for the 'forrest' command
| More help at http://forrest.apache.org/ and dev AT forrest.apache.org
*-----------------------------------------------------------------
</echo>
</target>
<!-- =================================================================== -->
<!-- Generate project-site -->
<!-- =================================================================== -->
<target name="docs" depends="site"/>
<target name="site" depends="dist-shbat"
description="Generates static HTML documentation">
<ant antfile="${forrest.core}/forrest.build.xml" target="site"/>
</target>
<target name="webapp" depends="dist-shbat"
description="Builds a cocoon webapp for local execution">
<ant antfile="${forrest.core}/forrest.build.xml" target="webapp"/>
</target>
<!-- ================================== -->
<!-- Test targets -->
<!-- ================================== -->
<target name="test"
depends="validate-config, testseed, testPlugins"
description="Test that the features are okay before committing."/>
<target name="test-basic"
depends="validate-config, testseedBasic"/>
<target name="test-sample" depends="validate-config"
description="Does 'seed-sample' and generates the 'skinned' site">
<antcall target="testSiteType">
<param name="test.site.type" value="skinned"/>
</antcall>
</target>
<target name="testPlugins"
depends="cleanPlugins"
description="Test each type of the plugin">
<!--
FIXME: these don't work as the compile stage executes since $java.dir = FORREST_HOME/main/java
instead of PLUGIN_HOME/java
<echo level="info">=============================</echo>
<echo level="info">Testing using an input plugin</echo>
<echo level="info">=============================</echo>
<ant antfile="${forrest.home}/plugins/org.apache.forrest.plugin.excel/build.xml" target="test">
<property name="basedir" location="${forrest.home}/plugins/org.apache.forrest.plugin.excel"/>
</ant>
<echo level="info">=============================</echo>
<echo level="info">Testing using an ouptut plugin</echo>
<echo level="info">=============================</echo>
<ant antfile="${forrest.home}/plugins/org.apache.forrest.plugin.output.pdf/build.xml" target="test">
<property name="basedir" location="${forrest.home}/plugins/org.apache.forrest.plugin.output.pdf"/>
</ant>
<echo level="info">=============================</echo>
<echo level="info">Testing using an internal plugin</echo>
<echo level="info">=============================</echo>
<ant antfile="${forrest.home}/plugins/IMSManifest/build.xml" target="test">
<property name="basedir" location="${forrest.home}/plugins/IMSManifest"/>
</ant>
-->
</target>
<target name="cleanPlugins"
description="Remove installed plugins before testing to ensure they are correctly installed when run">
<delete dir="${forrest.home}/build/plugins"/>
</target>
<target name="testseed"
depends="init, cleanPlugins"
description="Called by test target - Does 'seed-sample' and generates the different types of sites (skinned, dispatcher...)">
<for list="skinned,dispatcher" param="type">
<sequential>
<antcall target="testSiteType">
<param name="test.site.type" value="@{type}"/>
</antcall>
</sequential>
</for>
</target>
<target name="testseedBasic"
depends="init, cleanPlugins"
description="Called by test target - Does 'seed-basic' and generates the different types of sites (skinned, dispatcher...)">
<for list="skinned,dispatcher" param="type">
<sequential>
<antcall target="testSiteBasicType">
<param name="test.site.type" value="@{type}"/>
</antcall>
</sequential>
</for>
</target>
<target name="testSiteType"
depends="testSeedSiteType,testReplacePluginsList"
if="test.site.type"
description="Called by test target - Seeds, replaces list of required plugins and generates a new site for testing">
<ant antfile="${forrest.core}/forrest.build.xml" target="site" inheritAll="false">
<property name="forrest.home" value="${forrest.home}"/>
<property name="project.home" value="${test.dir}"/>
</ant>
</target>
<target name="testSiteBasicType"
depends="testSeedSiteBasicType,testReplacePluginsList"
if="test.site.type"
description="Called by test target - Seeds, replaces list of required plugins and generates a new site for testing">
<ant antfile="${forrest.core}/forrest.build.xml" target="site">
<property name="forrest.home" value="${forrest.home}"/>
<property name="project.home" value="${test.dir}"/>
</ant>
</target>
<target name="testSeedSiteType"
description="Called by test target - Seeds a new site for testing and read the value of project.required.plugins if supplied">
<echo level="info">
-------------------------------------
Testing seeded ${test.site.type} site ...
-------------------------------------
</echo>
<echo/>
<property name="test.dir" value="${build.dir}/test_${test.site.type}_site"/>
<delete dir="${test.dir}"/>
<mkdir dir="${test.dir}"/>
<ant antfile="${forrest.core}/forrest.build.xml" target="seed">
<property name="forrest.home" value="${forrest.home}"/>
<property name="project.home" value="${test.dir}"/>
</ant>
<!-- reading the value of project.required.plugins property if defined in forrest.properties.${test.site.type}.properties -->
<property file="${test.dir}/forrest.properties.${test.site.type}.properties"/>
<delete file="${test.dir}/forrest.properties.*.properties" failonerror="false">
<fileset dir="${test.dir}" includes="forrest.properties.*.properties"/>
</delete>
</target>
<target name="testSeedSiteBasicType">
<echo level="info">
-------------------------------------
Testing seeded basic ${test.site.type} site ...
-------------------------------------
</echo>
<echo/>
<property name="test.dir" value="${build.dir}/test_${test.site.type}_site"/>
<delete dir="${test.dir}"/>
<mkdir dir="${test.dir}"/>
<ant antfile="${forrest.core}/forrest.build.xml" target="seed-basic">
<property name="forrest.home" value="${forrest.home}"/>
<property name="project.home" value="${test.dir}"/>
</ant>
<!-- reading the value of project.required.plugins property if defined in forrest.properties.${test.site.type}.properties -->
<property file="${test.dir}/forrest.properties.${test.site.type}.properties"/>
<delete file="${test.dir}/forrest.properties.*.properties" failonerror="false">
<fileset dir="${test.dir}" includes="forrest.properties.*.properties"/>
</delete>
</target>
<target name="testReplacePluginsList"
if="project.required.plugins"
description="Called by test target - Replaces the list of required plugins if supplied for testing a new site">
<echo level="info" message="Replace the plugins list"/>
<replaceregexp file="${test.dir}/forrest.properties"
match="project.required.plugins=(.+)"
replace="project.required.plugins=${project.required.plugins}"
byline="true"/>
</target>
<!-- ==================================================
Target used by Gump for the main "forrest" project.
Our gump descriptor also has other projects for other aspects
of forrest build:
https://svn.apache.org/repos/asf/gump/metadata/project/forrest.xml
================================================== -->
<target name="gump" description="Target used by Gump: forrest">
<antcall target="jar"/>
</target>
<!-- Target used by Gump to deploy current versions of some plugins -->
<target name="gump-plugins" depends="init"
description="Target used by Gump: forrest-test-plugins">
<ant antfile="${forrest.home}/plugins/org.apache.forrest.plugin.input.dtdx/build.xml" target="local-deploy">
<property name="basedir" location="${forrest.home}/plugins/org.apache.forrest.plugin.input.dtdx"/>
</ant>
<ant antfile="${forrest.home}/plugins/org.apache.forrest.plugin.output.pdf/build.xml" target="local-deploy">
<property name="basedir" location="${forrest.home}/plugins/org.apache.forrest.plugin.output.pdf"/>
</ant>
</target>
<!-- Target used by Gump to run the test with some other modifications -->
<target name="gump-forrest-test" depends="init"
description="Target used by Gump: forrest-test">
<echo level="info">Doing pre-run configuration:</echo>
<echo level="info">Add a Cocoon cli.xconf and exclude any problem docs.</echo>
<copy overwrite="true"
file="${forrest.home}/main/webapp/WEB-INF/cli.xconf"
todir="${forrest.home}/main/fresh-site/src/documentation/conf/"/>
<replaceregexp file="${forrest.home}/main/fresh-site/src/documentation/conf/cli.xconf"
match="&lt;/cocoon>"
replace="&lt;exclude pattern='**linking.pdf'/>&lt;exclude pattern='**custom.html'/>&lt;/cocoon>"/>
<replaceregexp file="${forrest.home}/main/fresh-site/forrest.properties"
match="^# layout properties$"
replace="project.configfile=${project.home}/src/documentation/conf/cli.xconf"
byline="true"/>
<!--
<echo level="info">Raise verbosity of xml catalogs</echo>
<replaceregexp file="${forrest.home}/main/fresh-site/src/documentation/classes/CatalogManager.properties"
match="verbosity=1$"
replace="verbosity=10"
byline="true"/>
<replaceregexp file="${forrest.home}/main/webapp/WEB-INF/properties/core.properties"
match="org.apache.xml.resolver.verbosity=0$"
replace="org.apache.xml.resolver.verbosity=10"
byline="true"/>
-->
<antcall target="validate-config"/>
<antcall target="testSiteType">
<param name="test.site.type" value="skinned"/>
</antcall>
<echo level="info">Doing post-run configuration:</echo>
<delete file="${forrest.home}/main/fresh-site/src/documentation/conf/cli.xconf"/>
<replace file="${forrest.home}/main/fresh-site/forrest.properties"
token="project.configfile=${project.home}/src/documentation/conf/cli.xconf"
value="# layout properties"/>
<!--
<echo level="info">Reset verbosity of xml catalogs</echo>
<replaceregexp file="${forrest.home}/main/fresh-site/src/documentation/classes/CatalogManager.properties"
match="verbosity=10$"
replace="verbosity=1"
byline="true"/>
<replaceregexp file="${forrest.home}/main/webapp/WEB-INF/properties/core.properties"
match="org.apache.xml.resolver.verbosity=10$"
replace="org.apache.xml.resolver.verbosity=0"
byline="true"/>
-->
</target>
<!-- Target used by Gump to run RAT on Forrest sources -->
<target name="gump-rat" depends="init"
description="Target used by Gump: forrest-rat">
<typedef resource="org/apache/rat/anttasks/antlib.xml"
uri="antlib:org.apache.rat.anttasks"/>
<rat:report xmlns:rat="antlib:org.apache.rat.anttasks">
<fileset dir="${forrest.home}">
<excludesfile name="${forrest.home}/etc/rat-avoid.txt"/>
</fileset>
</rat:report>
</target>
<!-- =================================================================== -->
<!-- Compile Cocoon java classes -->
<!-- =================================================================== -->
<target name="compile" depends="init">
<mkdir dir="${build.classes}"/>
<javac srcdir= "${java.dir}"
destdir= "${build.classes}"
source= "${build.compiler.vm}"
target= "${build.compiler.vm}"
debug= "${build.compiler.debug}"
optimize= "${build.compiler.optimize}"
deprecation= "${build.compiler.deprecation}"
nowarn= "${build.compiler.nowarn}"
classpathref= "classpath"></javac>
</target>
<!-- =================================================================== -->
<!-- Jar Cocoon classes -->
<!-- =================================================================== -->
<target name="jar" depends="init, compile">
<jar destfile="${build.dir}/xml-forrest.jar">
<fileset dir="${build.classes}"/>
<fileset file="${forrest.core}/webapp/WEB-INF/ehcache.xml"/>
<fileset file="${forrest.home}/LICENSE.txt"/>
<fileset file="${forrest.home}/NOTICE.txt"/>
<manifest>
<section name="org/apache/forrest/">
<attribute name="Comment" value="Support classes for Apache Forrest"/>
<attribute name="Implementation-Title" value="org.apache.forrest"/>
<attribute name="Implementation-Version" value="${forrest.version} ${TODAY}"/>
<attribute name="Implementation-Vendor" value="The Apache Software Foundation"/>
<attribute name="Implementation-URL" value="http://forrest.apache.org/"/>
</section>
<section name="org/apache/cocoon/">
<attribute name="Comment" value="Support classes for Apache Forrest"/>
<attribute name="Implementation-Title" value="org.apache.cocoon"/>
<attribute name="Implementation-Version" value="${forrest.version} ${TODAY}"/>
<attribute name="Implementation-Vendor" value="The Apache Software Foundation"/>
<attribute name="Implementation-URL" value="http://forrest.apache.org/"/>
</section>
</manifest>
</jar>
<echo level="info">
*-----------------------------------------------------------------
| Installation notice
*-----------------------------------------------------------------
| You have now built the ${forrest.version} version of Forrest.
| Please set the environment variable FORREST_HOME to point to
| ${forrest.home}
| It is recommended to add
| unix: $FORREST_HOME/bin: to your $PATH
| win: %FORREST_HOME%\bin; to your %PATH%
| Then do 'forrest -projecthelp' to list options for the 'forrest' command
| More help at http://forrest.apache.org/
*-----------------------------------------------------------------
</echo>
</target>
<!-- =================================================================== -->
<!-- Clean build, that is clean before build -->
<!-- =================================================================== -->
<target name="clean-build" depends="clean, jar" description="Clean build, that is clean before build..." />
<!-- =================================================================== -->
<!-- Generate DTDs with entities expanded -->
<!-- =================================================================== -->
<target name='expand-dtd' depends="init"
description="Generates '-full' DTDs, with all entity refs expanded, for use with catalog-ignorant editors like IDEA">
<taskdef name="dtd2xml" classpathref="classpath" classname="org.cyberneko.dtd.anttasks.DTD2XML"/>
<property name="dtdx.dir" location="${build.dir}/tmp/dtdx"/>
<mkdir dir="${dtdx.dir}"/>
<!-- Generate an intermediate XML representation of each DTD -->
<dtd2xml classpathref="classpath" outputDir="${dtdx.dir}" preserveDirs="yes" extension=".dtdx">
<fileset dir="${forrest.core}/webapp/resources/schema/dtd">
<include name="changes-v12.dtd"/>
<include name="changes-v13.dtd"/>
<include name="document-v11.dtd"/>
<include name="document-v12.dtd"/>
<include name="document-v13.dtd"/>
<include name="faq-v12.dtd"/>
<include name="faq-v13.dtd"/>
<include name="howto-v12.dtd"/>
<include name="howto-v13.dtd"/>
<include name="todo-v12.dtd"/>
<include name="todo-v13.dtd"/>
<include name="v20/document-v20.dtd"/>
<include name="v20/changes-v20.dtd"/>
<include name="v20/faq-v20.dtd"/>
<include name="v20/howto-v20.dtd"/>
<include name="v20/todo-v20.dtd"/>
</fileset>
</dtd2xml>
<!-- Now transform the intermediate format back to the regular DTD format -->
<!-- Note that we could also transform to XSD or RNG -->
<xslt basedir="${dtdx.dir}"
destdir="${dist-shbat.dir}/webapp/resources/schema/dtd"
extension="-full.dtd"
style="${forrest.home}/tools/dtdconverters/dtdx2dtd.xsl">
<include name="*.dtdx"/>
<include name="v20a/*.dtdx"/>
</xslt>
</target>
<!-- =================================================================== -->
<!-- Use Apache Ant to generate a patch file -->
<!-- =================================================================== -->
<target name="patch" depends="init">
<!-- Do not advertise this capability. May need to be removed.
It makes a messy patch when they have other pending changes.
description="Create a patch from your working copy, ready for contribution">
-->
<ant antfile="${forrest.home}/tools/targets/patch.xml" target="patchpackage"/>
</target>
</project>