summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Johnson <mjohnson@apache.org>2002-02-15 02:11:36 +0000
committerMark Johnson <mjohnson@apache.org>2002-02-15 02:11:36 +0000
commita836e5e135e1977dfc0574acc0e692eb77fe8220 (patch)
treeaa91ac91e87203b3e5570ef9866b957ceb325bcc
parente2841de795a7f4ac174d783de903306e3a19b805 (diff)
downloadpoi-a836e5e135e1977dfc0574acc0e692eb77fe8220.tar.gz
poi-a836e5e135e1977dfc0574acc0e692eb77fe8220.zip
update build tools per Ken Barozzi's patch
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352096 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--build.xml976
-rw-r--r--src/contrib/builds/poibrowser.xml28
-rw-r--r--src/contrib/lib/placeholder1
-rw-r--r--tools/resources/stylesheets/announcement2readme.xsl89
-rw-r--r--tools/resources/stylesheets/announcement2txt.xsl174
-rw-r--r--tools/resources/stylesheets/bugzilla2patchqueue.xsl36
-rw-r--r--tools/resources/stylesheets/changelog.xsl95
-rw-r--r--tools/resources/stylesheets/patchqueue2text4dev.xsl68
-rw-r--r--tools/resources/stylesheets/patchqueue2xdocs.xsl111
-rw-r--r--tools/targets/compile.xtarget165
-rw-r--r--tools/targets/contrib.xtarget32
-rw-r--r--tools/targets/dev.xtarget209
-rw-r--r--tools/targets/docs.xtarget234
-rw-r--r--tools/targets/init.xtarget99
-rw-r--r--tools/targets/interactive.xtarget33
-rw-r--r--tools/targets/preinit.xtarget65
-rw-r--r--tools/targets/robot.xtarget75
-rw-r--r--tools/targets/scratchpad.xtarget32
-rw-r--r--tools/targets/test.xtarget40
-rw-r--r--tools/targets/try.xml15
-rw-r--r--tools/targets/util.xtarget15
21 files changed, 1670 insertions, 922 deletions
diff --git a/build.xml b/build.xml
index 37df3d57db..00365f1d27 100644
--- a/build.xml
+++ b/build.xml
@@ -1,28 +1,42 @@
+<?xml version="1.0"?>
+<!DOCTYPE project [
+<!ENTITY preinit-target SYSTEM "./tools/targets/preinit.xtarget">
+<!ENTITY init-target SYSTEM "./tools/targets/init.xtarget">
+<!ENTITY compile-target SYSTEM "./tools/targets/compile.xtarget">
+<!ENTITY interactive-target SYSTEM "./tools/targets/interactive.xtarget">
+<!ENTITY scratchpad-target SYSTEM "./tools/targets/scratchpad.xtarget">
+<!ENTITY contrib-target SYSTEM "./tools/targets/contrib.xtarget">
+<!ENTITY util-target SYSTEM "./tools/targets/util.xtarget">
+<!ENTITY dev-target SYSTEM "./tools/targets/dev.xtarget">
+<!ENTITY test-target SYSTEM "./tools/targets/test.xtarget">
+<!ENTITY robot-target SYSTEM "./tools/targets/robot.xtarget">
+<!ENTITY docs-target SYSTEM "./tools/targets/docs.xtarget">
+]>
+
+<project default="interactive" basedir="." name="krysalis">
+
<!-- ===========================================================================
- * =========================== *
- | POI Build System |
- * =========================== *
+ * ===================================== *
+ | Krysalis Centipede Build System |
+ * ===================================== *
by
- Nicola Ken Barozzi <barozzi@nicolaken.com>
- Marc Johnson <mjohnson at apache dot org>
+ Nicola Ken Barozzi <barozzi@nicolaken.com>
+ Marc Johnson <mjohnson at apache dot org>
- extends
- * =========================== *
- | Apache Cocoon Build System |
- * =========================== *
+ extends the Apache Cocoon Build System
+ (http://xml.apache.org/cocoon/)
by
-
- Stefano Mazzocchi <stefano@apache.org>
- Carsten Ziegeler <cziegeler@apache.org>
-
+ Stefano Mazzocchi <stefano@apache.org>
+ Carsten Ziegeler <cziegeler@apache.org>
+
Installing the build tools
==========================
-The POI build system is based on Apache Ant, which is a Java building tool
+The Krysalis build system is based on Apache Ant, which is a Java building tool
originally developed for the Tomcat project but now used in many other
Apache projects and extended by many developers.
@@ -30,7 +44,7 @@ Ant is a little but very handy tool that uses a build file written in XML
(this file) as building instructions. For more information refer to
"http://jakarta.apache.org/ant/".
-To make things easier for you, the POI distribution contains a precompiled
+To make things easier for you, this distribution contains a precompiled
version of Ant and the build scripts take care of running it.
The only thing that you have to make sure, is the "JAVA_HOME" environment
@@ -42,14 +56,14 @@ That's all you have to do to be ready to go.
Building instructions
=====================
-Ok, let's build the baby. First, make sure your current working directory is
-where this very file is located. Then type
+First, make sure your current working directory is where this very file
+is located. Then type
./build.sh (unix)
.\build.bat (win32)
if everything is right and all the required packages are visible, this action
-will generate a jar file in the "./build/poi" directory.
+will start the build and prompt you with options.
Note, that if you do further development, compilation time is reduced since
Ant is able of detecting which files have changed and to recompile them at need.
@@ -85,21 +99,19 @@ is used by project maintainers to take care of everything in the project,
no less and no more.
To know more about the available targets take a look at this file, which is
-pretty self-explanatory or type
+pretty self-explanatory.
+To see al list of all targets, type
[unix] ./build.sh -projecthelp
[win32] .\build.bat -projecthelp
-and concentrate on the target descriptions that start with a star '*': these
-are the one you should call, the others are internal targets that are called
-by the main ones.
Build Dependencies
==================
Some components are optional and require special jar files to be compiled
-and added to the web application. Some if these jars are already included
+and added to the application. Some of these jars are already included
in the distribution while others not.
-For each optional package which is not available, a warning is
+For each optional package which is not available, a warning can be
printed. If you don't like these warnings, specify the property "omit.opt.warnings"
(build -Domit.opt.warnings).
@@ -111,929 +123,49 @@ the command line: -Dversion="dev-1.2.1", for example.
Specifying a subset of unit tests to be executed
================================================
Specify the package on the command line:
--Dtest.specific="org.apache.poi.util" will select only the util
+-Dtest.specific="org.krysalis.p.testme" will select only the testme
tests to be run. If you've run any other unit tests in a prior
session, you'll need to specify the 'clean' target to remove
extraneous test classes from execution:
-./build.sh clean test -Dtest.specific="org/apache/poi/util"
+./build.sh clean test -Dtest.specific="org/krysalis/p/testme"
or
-.\build.bat clean test -Dtest.specific="org/apache/poi/util"
+.\build.bat clean test -Dtest.specific="org/krysalis/p/testme"
- Happy hacking from the POI Dev Team :)
+ Happy hacking from the Dev Team :)
============================================================================ -->
-<project default="interactive" basedir="." name="POI">
-
- <!--
- Give user a chance to override without editing this file
- (and without typing -D each time he compiles it)
- -->
- <property file=".ant.properties"/>
- <property file="${user.home}/.ant.properties"/>
-
- <!--
- these are here only for those who use jikes compiler. For other
- developers this part makes no difference.
- -->
- <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"/>
-
+
<!-- =================================================================== -->
- <!-- Indentify Classpath -->
- <!-- =================================================================== -->
- <path id="classpath">
- <fileset dir="./lib/core">
- <include name="*.jar"/>
- </fileset>
- <fileset dir="./lib/optional">
- <include name="*.jar"/>
- </fileset>
- </path>
-
- <path id="scratchpad.classpath">
- <fileset dir="./lib/core">
- <include name="*.jar"/>
- </fileset>
- <fileset dir="./lib/optional">
- <include name="*.jar"/>
- </fileset>
- <fileset dir="./src/scratchpad/lib">
- <include name="*.jar"/>
- </fileset>
- <!-- FIXME : how to build a path that references a property set in 'init' target ? -->
- <pathelement path="./build/cocoon/classes"/>
- </path>
-
- <!-- =================================================================== -->
- <!-- Initialization target -->
- <!-- =================================================================== -->
- <target name="init">
- <tstamp/>
-
- <property name="fullname" value="POI"/>
- <property name="Name" value="Poi"/>
- <property name="name" value="poi"/>
- <property name="version" value="1.1-dev"/>
- <property name="short.version" value="1.1"/>
- <property name="year" value="2001-2002"/>
-
- <echo message="--------------------------------------------------------------"/>
- <echo message=" ${fullname} [${year}] "/>
- <echo message="--------------------------------------------------------------"/>
- <echo message="Building with ${ant.version}"/>
- <echo message="using build file ${ant.file}"/>
- <echo message="--------------------------------------------------------------"/>
-
- <property name="debug" value="on"/>
- <property name="optimize" value="off"/>
- <property name="deprecation" value="off"/>
- <property name="nowarn" value="on"/>
- <property name="build.compiler" value="classic"/>
- <property name="target.vm" value="1.2"/>
-
- <property name="src.dir" value="./src"/>
- <property name="java.dir" value="${src.dir}/java"/>
- <property name="test.dir" value="${src.dir}/testcases"/>
- <property name="test.specific" value=""/>
- <property name="lib.dir" value="./lib"/>
- <property name="bin.dir" value="./bin"/>
- <property name="tools.dir" value="./tools"/>
- <property name="docs.dir" value="${src.dir}/documentation/xdocs"/>
- <property name="images.dir" value="${src.dir}/documentation/images"/>
- <property name="resource.dir" value="${src.dir}/resources"/>
- <property name="packages" value="org.apache.poi.*"/>
- <property name="context.dir" value="${src.dir}/documentation"/>
-
- <property name="scratchpad.dir" value="${src.dir}/scratchpad"/>
- <property name="scratchpad.src" value="${scratchpad.dir}/src"/>
- <property name="scratchpad.lib" value="${scratchpad.dir}/lib"/>
- <property name="scratchpad.name" value="poi-scratchpad"/>
-
- <property name="build.root" value="./build"/>
- <property name="build.dir" value="${build.root}/${name}"/>
- <property name="build.src" value="${build.dir}/src"/>
- <property name="build.test" value="${build.dir}/testcases"/>
- <property name="build.dest" value="${build.dir}/classes"/>
- <property name="build.docs" value="${build.dir}/docs"/>
- <property name="build.xdocs" value="${build.dir}/xdocs"/>
- <property name="build.docs.printer" value="${build.dir}/printer-docs"/>
- <property name="build.javadocs" value="${build.dir}/javadocs"/>
- <property name="build.context" value="${build.dir}/documentation"/>
- <property name="build.scratchpad" value="${build.dir}/scratchpad"/>
- <property name="build.scratchpad.src" value="${build.scratchpad}/src"/>
- <property name="build.scratchpad.dest" value="${build.scratchpad}/classes"/>
- <property name="build.patchqueue" value="${build.dir}/patchqueue"/>
-
- <property name="dist.root" value="./dist"/>
- <property name="dist.name" value="${name}-${version}"/>
- <property name="dist.dir" value="${dist.root}/${dist.name}"/>
- <property name="dist.src.dir" value="${dist.root}/source/${dist.name}"/>
- <property name="dist.bin.dir" value="${dist.root}/bin/${dist.name}"/>
- <property name="dist.target" value="${dist.root}"/>
-
- <property name="site" value="../xml-site/targets/${name}"/>
-
- <property name="build.announce" value="${build.dir}/Announcement.xml"/>
- <property name="announce2txt" value="./documentation/stylesheets/announcement2txt.xsl"/>
-
- <!--
- The location of tools.jar, relative to the JAVA_HOME home.
- -->
- <property name="tools.jar" value="${java.home}/../lib/tools.jar"/>
- <available file="${tools.jar}" property="tools.jar.present"/>
-
- <filter token="Name" value="${fullname}"/>
- <filter token="name" value="${fullname}"/>
- <filter token="year" value="${year}"/>
- <filter token="version" value="${version}"/>
- <filter token="date" value="${TODAY}"/>
- <filter token="log" value="true"/>
- <filter token="verbose" value="true"/>
- <filter token="install.war" value="${install.war}"/>
-
- <!-- Add filters for loading database information from database.properties file -->
- <property file="database.properties"/>
- <filter token="database-driver" value="${database-driver}"/>
- <filter token="database-url" value="${database-url}"/>
- <filter token="database-user" value="${database-user}"/>
- <filter token="database-password" value="${database-password}"/>
-
- <!-- compile the ant tasks -->
- <mkdir dir="${tools.dir}/anttasks"/>
- <javac srcdir="${tools.dir}/src" destdir="${tools.dir}/anttasks"/>
-
- </target>
-
- <!-- =================================================================== -->
- <!-- Interactive build -->
- <!-- =================================================================== -->
- <target name="interactive" description="Interactive Build" depends="init">
- <echo message="--------------------------------------------------------------"/>
- <echo message="| | _ \/ _ \_ _| |"/>
- <echo message="| | _/ (_) | | |"/>
- <echo message="| |_| \___/___| |"/>
- <echo message="--------------------------------------------------------------"/>
- <echo message=" ${fullname} [${year}] "/>
- <echo message="--------------------------------------------------------------"/>
- <echo message="Building with ${ant.version}"/>
- <echo message="using build file ${ant.file}"/>
- <echo message="--------------------------------------------------------------"/>
- <echo message=" These are the most common build targets."/>
- <echo message=" You can also invoke them directly; see build.xml for more info. "/>
- <echo message=" Builds will be in /build directory, distributions in /dist."/>
- <echo message=" "/>
- <echo message=" compile ------ compiles the source code "/>
- <echo message=" docs --------- generates the html docs"/>
- <echo message=" cleandocs ---- cleans the build docs directory"/>
- <echo message=" javadocs ----- generates the API documentation"/>
- <echo message=" test --------- performs the jUnit tests"/>
- <echo message=" clean -------- cleans the build directory"/>
- <echo message=" dist --------- creates src and bin distributions"/>
- <echo message=" "/>
- <taskdef name="user-input" classname="UserInput"
- classpath="./tools/anttasks"/>
-
- <property name="input.selection" value="compile"/>
- <user-input name="input.selection">Please select a target </user-input>
-
- <antcall target="${input.selection}"/>
-
- </target>
-
- <!-- =================================================================== -->
- <!-- Print out warnings for optional components -->
- <!-- =================================================================== -->
- <target name="optional-warnings"
- description="Outputs warnings if some optional jars are missing from the environment">
- </target>
-
-
- <!-- =================================================================== -->
- <!-- Prepares the build directory -->
- <!-- =================================================================== -->
- <target name="prepare" depends="init">
- <mkdir dir="${build.dir}"/>
- </target>
-
- <!-- =================================================================== -->
- <!-- Prepares the source code -->
- <!-- =================================================================== -->
- <target name="prepare-src" depends="prepare,generate-java-code">
- <mkdir dir="${build.src}"/>
- <mkdir dir="${build.dest}"/>
- <copy todir="${build.src}" filtering="on">
- <fileset dir="${java.dir}"/>
- </copy>
-
- <mkdir dir="${build.scratchpad.src}"/>
- <mkdir dir="${build.scratchpad.dest}"/>
- <copy todir="${build.scratchpad.src}" filtering="on">
- <fileset dir="${scratchpad.src}"/>
- </copy>
- </target>
-
-
- <!-- =================================================================== -->
- <!-- Set a variable if the generated java code is already up-to-date. -->
- <!-- =================================================================== -->
- <target name="generate-java-code-check" depends="init"><!--
- <uptodate property="generate-java-code.notrequired"
- targetfile="${build.src}/org/apache/cocoon/components/browser/BrowserImpl.java" >
- <srcfiles dir="${java.dir}/org/apache/cocoon/components/browser"
- includes="BrowserImpl.xml,BrowserImpl.xsl"/>
- </uptodate>-->
- </target>
-
+ <!-- external reference are relative to to tools/targets/*.xtarget -->
<!-- =================================================================== -->
- <!-- Generate the Java code from XML using XSLT -->
- <!-- =================================================================== -->
- <target name="generate-java-code" depends="generate-java-code-check"
- unless="generate-java-code.notrequired"><!--
- <style basedir="${java.dir}/org/apache/cocoon/components/browser"
- destdir="${build.src}/org/apache/cocoon/components/browser"
- includes="BrowserImpl.xml"
- extension=".java"
- style="${java.dir}/org/apache/cocoon/components/browser/BrowserImpl.xsl"/>-->
- </target>
-
-
- <!-- =================================================================== -->
- <!-- Compiles the source directory -->
- <!-- =================================================================== -->
- <target name="compile" depends="prepare-src"
- description="Compiles the source code">
- <copy todir="${build.dest}">
- <fileset dir="${build.src}">
- <include name="**/Manifest.mf"/>
- <include name="**/*.xsl"/>
- <include name="**/*.roles"/>
- <include name="**/*.xconf"/>
- <include name="META-INF/**"/>
- </fileset>
- </copy>
-
- <echo message="Compiling with Java ${ant.java.version}, debug ${debug}, optimize ${optimize}, deprecation ${deprecation}"/>
-
- <javac srcdir="${build.src}"
- destdir="${build.dest}"
- debug="${debug}"
- optimize="${optimize}"
- deprecation="${deprecation}"
- target="${target.vm}"
- nowarn="${nowarn}">
- <classpath refid="classpath"/>
- </javac>
-
- <copy todir="${build.scratchpad.dest}">
- <fileset dir="${build.scratchpad.src}">
- <include name="**/Manifest.mf"/>
- <include name="**/*.xsl"/>
- <include name="**/*.roles"/>
- <include name="**/*.xconf"/>
- <include name="META-INF/**"/>
- </fileset>
- </copy>
-
- <javac srcdir="${build.scratchpad.src}"
- destdir="${build.scratchpad.dest}"
- debug="${debug}"
- optimize="${optimize}"
- deprecation="${deprecation}"
- target="${target.vm}">
- <classpath refid="scratchpad.classpath"/>
- </javac>
-
- </target>
-
- <target name="generate-records" depends="prepare"
- description="Generates the record source code">
-
- <java classname="org.apache.poi.hssf.util.RecordGenerator" fork="yes">
- <arg value="src/records/definitions"/>
- <arg value="src/records/styles"/>
- <arg value="src/java"/>
- <arg value="src/testcases"/>
- <classpath>
- <path refid="classpath"/>
- <pathelement location="${build.dest}"/>
- </classpath>
- </java>
-
- </target>
-
- <!-- =================================================================== -->
- <!-- Creates the jar file -->
- <!-- =================================================================== -->
- <target name="all" depends="package" description="Default target"/>
-
- <target name="package" depends="compile" description="Generates the jar package">
- <jar jarfile="${build.dir}/${name}.jar" manifest="${build.src}/Manifest.mf">
- <fileset dir="${build.dest}">
- <include name="**"/>
- <include name="META-INF/**"/>
- </fileset>
- </jar>
-
- <jar jarfile="${build.dir}/${scratchpad.name}.jar">
- <fileset dir="${build.scratchpad.dest}">
- <include name="**"/>
- </fileset>
- </jar>
- </target>
-
- <!-- =================================================================== -->
- <!-- Gets pending patches from bugzilla and cleans html -->
- <!-- =================================================================== -->
- <target name="prepare-patchqueue" depends="init" description="Patch queue 2 mail">
- <mkdir dir="${build.patchqueue}"/>
- <get src="http://nagoya.apache.org/bugzilla/buglist.cgi?bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Cocoon+2&amp;short_desc=%5BPATCH%5D&amp;short_desc_type=anywordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;namedcmd=cocoon+patch+queue&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time"
- dest="${build.patchqueue}/bugzillapatchqueue.html"
- verbose="true"
- usetimestamp="true"
- ignoreerrors="true"/>
-
- <taskdef name="jtidy" classname="JTidyTask"
- classpath="${tools.dir}/anttasks"/>
-
- <jtidy src="${build.patchqueue}/bugzillapatchqueue.html"
- dest="${build.patchqueue}/bugzillapatchqueue.xhtml"
- log="${build.patchqueue}/bugzillapatchqueue.log"
- summary="true"
- warn="true"/>
-
- </target>
-
- <!-- =================================================================== -->
- <!-- Transforms bugzilla patches html into xml -->
+ <!-- Pre Initialization --> &preinit-target;
<!-- =================================================================== -->
- <target name="patchqueue-xml" depends="prepare-patchqueue">
- <copy file="${tools.dir}/src/bugzilla2patchqueue.xsl" tofile="${build.patchqueue}/bugzilla2patchqueue.xsl"/>
- <style basedir="${build.patchqueue}"
- destdir="${build.patchqueue}"
- includes="bugzillapatchqueue.xhtml"
- extension=".xml"
- style="bugzilla2patchqueue.xsl"/>
-
- </target>
-
+ <!-- Initialization targets --> &init-target;
<!-- =================================================================== -->
- <!-- Makes patches.xml for xdocs using bugzilla patches xml -->
- <!-- =================================================================== -->
- <target name="patchqueue-xdocs" depends="patchqueue-xml">
- <copy file="${tools.dir}/src/patchqueue2xdocs.xsl" tofile="${build.patchqueue}/patchqueue2xdocs.xsl"/>
-
- <style basedir="${build.patchqueue}"
- destdir="${build.patchqueue}"
- includes="bugzillapatchqueue.xml"
- extension=".xdoc"
- style="patchqueue2xdocs.xsl"/>
-
- <copy file="${build.patchqueue}/bugzillapatchqueue.xdoc" tofile="${docs.dir}/patches.xml"/>
-
- </target>
-
- <!-- =================================================================== -->
- <!-- Sends a notification of the current patch queue to the mailing list -->
- <!-- =================================================================== -->
- <target name="patchqueue" depends="patchqueue-xdocs">
- <copy file="${tools.dir}/src/patchqueue2text4dev.xsl" tofile="${build.patchqueue}/patchqueue2text4dev.xsl"/>
- <style basedir="${build.patchqueue}"
- destdir="${build.patchqueue}"
- includes="bugzillapatchqueue.xml"
- extension=".txt"
- style="patchqueue2text4dev.xsl"/>
-
- </target>
-
- <!-- =================================================================== -->
- <!-- Sends a notification of the current patch queue to the mailing list -->
+ <!-- Compile targets --> &compile-target;
<!-- =================================================================== -->
- <target name="patchqueue-notify" depends="patchqueue">
- <mail from="patch-queue@nicolaken.com"
- tolist="cocoon-dev@xml.apache.org"
- mailhost="192.4.0.155"
- subject="DO NOT REPLY [PATCH QUEUE] Summary ${TODAY}"
- files="${build.patchqueue}/bugzillapatchqueue.txt"/>
-
- </target>
-
- <!-- =================================================================== -->
- <!-- Prepares the docs -->
- <!-- =================================================================== -->
- <target name="prepare-docs" depends="init">
-
- <mkdir dir="${build.context}"/>
- <mkdir dir="${build.context}/images"/>
- <mkdir dir="${build.docs}"/>
- <mkdir dir="${build.dir}/work"/>
-
- <!-- make filtered copy of XML docs -->
- <copy todir="${build.context}" filtering="on">
- <fileset dir="${context.dir}">
- <exclude name="images/**"/>
- </fileset>
- </copy>
-
- <!-- Add changes and todo -->
-<!--
- <copy file="changes.xml" tofile="${build.context}/xdocs/changes.xml" filtering="on"/>
- <copy file="todo.xml" tofile="${build.context}/xdocs/todo.xml" filtering="on"/>
- <replace file="${build.context}/xdocs/changes.xml" token="src/documentation/xdocs/dtd/" value="dtd/"/>
- <replace file="${build.context}/xdocs/todo.xml" token="src/documentation/xdocs/dtd/" value="dtd/"/>
--->
- <!-- Copy images -->
- <copy todir="${build.context}/images" filtering="off">
- <fileset dir="${context.dir}/images"/>
- </copy>
-
- <!-- Copy entity catalog and entities -->
- <copy todir="${build.context}/resources/entities" filtering="on">
- <fileset dir="${resource.dir}/entities"/>
- </copy>
- <mkdir dir="${build.context}/WEB-INF/classes"/>
- <move todir="${build.context}/WEB-INF/classes">
- <fileset dir="${build.context}/resources/entities">
- <include name="CatalogManager.properties"/>
- </fileset>
- </move>
-
- </target>
-
-
+ <!-- Interactive targets --> &interactive-target;
<!-- =================================================================== -->
- <!-- Set a variable if the generated docs are already up-to-date. -->
+ <!-- Scratchpad targets --> &scratchpad-target;
<!-- =================================================================== -->
- <target name="docs_check" depends="init">
- <uptodate property="docs.notrequired" targetfile="${build.docs}/index.html" >
- <srcfiles dir="." includes="changes.xml,todo.xml"/>
- <srcfiles dir="${context.dir}/xdocs" includes="**/*.xml"/>
- </uptodate>
- </target>
-
+ <!-- Contrib targets --> &contrib-target;
<!-- =================================================================== -->
- <!-- If generated docs is already up-to-date, print a message saying so. -->
+ <!-- Utility targets --> &util-target;
<!-- =================================================================== -->
- <target name="docs_done" if="docs.notrequired">
- <echo message="-------------------------------------------------------------"/>
- <echo message="Not rebuilding docs, as they are up-to-date:"/>
- <echo message=" ${build.docs}/index.html is more recent than"/>
- <echo message=" todo.xml, changes.xml, ${context.dir}/xdocs/*.xml"/>
- <echo message="-------------------------------------------------------------"/>
- </target>
-
+ <!-- Developer targets --> &dev-target;
<!-- =================================================================== -->
- <!-- The documentation system (nearly beta...) -->
+ <!-- Testcases targets --> &test-target;
<!-- =================================================================== -->
- <target name="docs"
- depends="package, prepare-docs, docs_check, docs_done"
- unless="docs.notrequired"
- description="* Generates the documentation">
-
- <java classname="org.apache.cocoon.Main" fork="true" dir="${build.context}" failonerror="true">
- <arg value="-c."/>
- <arg value="-d../docs"/>
- <arg value="-w../work"/>
- <arg value="-l../work/cocoon.log"/>
- <arg value="-uINFO"/>
- <arg value="index.html"/>
- <classpath>
- <path refid="classpath"/>
- <fileset dir="${build.dir}">
- <include name="*.jar"/>
- </fileset>
- <pathelement location="${tools.jar}"/>
- <pathelement location="${build.context}/WEB-INF/classes"/>
- </classpath>
- </java>
-
- </target>
-
+ <!-- "Scripts" targets --> &robot-target;
<!-- =================================================================== -->
- <!-- Copies the tools.jar to javac.jar in web-inf/lib -->
+ <!-- Documentation targets --> &docs-target;
<!-- =================================================================== -->
- <target name="prepare-tools-lib" depends="package" if="tools.jar.present">
- <!-- NOTE: java.home is normally set by the JVM to the /jre directory -->
- <copy file="${tools.jar}" tofile="${build.war}/WEB-INF/lib/javac.jar"/>
- </target>
-
- <!-- =================================================================== -->
- <!-- Set a variable if the generated printer docs are already up-to-date. -->
- <!-- =================================================================== -->
- <target name="printer-docs_check" depends="init">
- <uptodate property="printer-docs.notrequired" targetfile="${build.docs.printer}/index.html" >
- <srcfiles dir="." includes="changes.xml,todo.xml"/>
- <srcfiles dir="${docs.dir}" includes="**/*.xml"/>
- </uptodate>
- </target>
-
- <!-- =================================================================== -->
- <!-- If generated printer docs is already up-to-date, print a message saying so. -->
- <!-- =================================================================== -->
- <target name="printer-docs_done" if="printer-docs.notrequired">
- <echo message="-------------------------------------------------------------"/>
- <echo message="Not rebuilding printer docs, as they are up-to-date:"/>
- <echo message=" ${build.docs.printer}/index.html is more recent than"/>
- <echo message=" todo.xml, changes.xml, ${docs.dir}/*.xml"/>
- <echo message="-------------------------------------------------------------"/>
- </target>
-
- <!-- =================================================================== -->
- <!-- Create the announcements -->
- <!-- =================================================================== -->
- <target name="announcement" depends="prepare" description="* Creates the announcement for new releases">
-
- <copy file="announcement.xml" tofile="${build.announce}" filtering="on"/>
-
- <style basedir="${build.dir}" destdir="./" style="${announce2txt}"
- includes="Announcement.xml" extension=".txt"/>
-
- </target>
-
- <!-- =================================================================== -->
- <!-- Prepares the printer-docs -->
- <!-- =================================================================== -->
- <target name="prepare-printer-docs" depends="prepare-docs">
-
- <mkdir dir="${build.dir}/printer_documentation"/>
-
- <!-- copy prepared docs -->
- <copy todir="${build.dir}/printer_documentation" filtering="off">
- <fileset dir="${build.context}">
- </fileset>
- </copy>
-
- <!-- copy printer skin -->
- <copy todir="${build.dir}/printer_documentation/stylesheets" filtering="off" overwrite="yes">
- <fileset dir="${build.context}/stylesheets/printer_skin">
- </fileset>
- </copy>
-
- </target>
-
-
- <!-- =================================================================== -->
- <!-- Generate printer-friendly HTML docs -->
- <!-- =================================================================== -->
- <target name="printer-docs" depends="package, prepare-printer-docs, printer-docs_check, printer-docs_done"
- unless="printer-docs.notrequired"
- description="* Generates printer-friendly documentation">
- <mkdir dir="${build.docs.printer}"/>
-
- <java classname="org.apache.cocoon.Main" fork="true" dir="${build.dir}/printer_documentation" failonerror="true">
- <arg value="-c."/>
- <arg value="-d../printer-docs"/>
- <arg value="-w../work-printer"/>
- <arg value="-l../work-printer/cocoon.log"/>
- <arg value="-uINFO"/>
- <arg value="index.html"/>
- <classpath>
- <path refid="classpath"/>
- <fileset dir="${build.dir}">
- <include name="*.jar"/>
- </fileset>
- <pathelement location="${tools.jar}"/>
- <pathelement location="${build.context}/WEB-INF/classes"/>
- </classpath>
- </java>
- </target>
-
- <!-- =================================================================== -->
- <!-- Creates the web site -->
- <!-- =================================================================== -->
- <target name="site" depends="docs, javadocs"
- description="Generates the web site (for site maintainers only)">
- <mkdir dir="${site}"/>
- <copy todir="${site}" filtering="off">
- <fileset dir="${build.docs}">
- </fileset>
- </copy>
- <copy todir="${site}/apidocs" filtering="off">
- <fileset dir="${build.javadocs}"/>
- </copy>
- </target>
-
- <!-- =================================================================== -->
- <!-- Set a variable if javadoc is already up-to-date. -->
- <!-- =================================================================== -->
- <target name="javadocs_check">
- <uptodate property="javadocs.notrequired" targetfile="${build.javadocs}/packages.html" >
- <srcfiles dir= "${build.src}" includes="**/*.java"/>
- </uptodate>
- </target>
-
- <!-- =================================================================== -->
- <!-- If javadoc is already up-to-date, print a message saying so. -->
- <!-- =================================================================== -->
- <target name="javadocs_done" if="javadocs.notrequired">
- <echo message="-------------------------------------------------------------"/>
- <echo message="Not rebuilding Javadocs, as they are up-to-date:"/>
- <echo message=" ${build.javadocs}/packages.html is more recent than"/>
- <echo message=" ${build.src}/**/*.java"/>
- <echo message="-------------------------------------------------------------"/>
- </target>
-
- <!-- =================================================================== -->
- <!-- Creates the API documentation -->
- <!-- =================================================================== -->
- <target name="javadocs" depends="prepare-src, javadocs_check, javadocs_done"
- unless="javadocs.notrequired"
- description="* Generates the API documentation">
- <mkdir dir="${build.javadocs}"/>
- <javadoc packagenames="${packages}"
- sourcepath="${build.src}"
- destdir="${build.javadocs}"
- author="true"
- version="true"
- use="false"
- noindex="true"
- windowtitle="${Name} API"
- doctitle="${Name}"
- bottom="Copyright &#169; ${year} POI project. All Rights Reserved."
- stylesheetfile="${resource.dir}/javadoc.css">
- <classpath refid="classpath"/>
- </javadoc>
- </target>
-
- <!-- =================================================================== -->
- <!-- Creates the source distribution -->
- <!-- =================================================================== -->
- <target name="dist-src" depends="docs, javadocs"
- description="Prepares the source distribution">
- <!-- Simply copy all and add the html docs -->
- <mkdir dir="${dist.root}"/>
- <mkdir dir="${dist.src.dir}"/>
- <mkdir dir="${dist.src.dir}/lib"/>
- <mkdir dir="${dist.src.dir}/src"/>
- <mkdir dir="${dist.src.dir}/src/java"/>
- <mkdir dir="${dist.src.dir}/src/documentation"/>
- <mkdir dir="${dist.src.dir}/src/resources"/>
- <mkdir dir="${dist.src.dir}/src/scratchpad"/>
- <mkdir dir="${dist.src.dir}/src/testcases"/>
- <mkdir dir="${dist.src.dir}/docs"/>
- <mkdir dir="${dist.src.dir}/docs/apidocs"/>
- <mkdir dir="${dist.src.dir}/tools"/>
-
- <!--
- <copy todir="${dist.src.dir}/bin">
- <fileset dir="${bin.dir}"/>
- </copy> -->
- <copy todir="${dist.src.dir}/tools">
- <fileset dir="${tools.dir}"/>
- </copy>
-
- <copy todir="${dist.src.dir}/src/documentation">
- <fileset dir="${build.context}"/>
- </copy>
-
- <copy todir="${dist.src.dir}/lib">
- <fileset dir="${lib.dir}"/>
- </copy>
-
- <copy todir="${dist.src.dir}/src/resources" filtering="on">
- <fileset dir="${resource.dir}">
- <exclude name="**/*.gif"/>
- <exclude name="**/*.jpg"/>
- <exclude name="**/*.png"/>
- </fileset>
- </copy>
-
- <copy todir="${dist.src.dir}/src/resources" filtering="off">
- <fileset dir="${resource.dir}">
- <include name="**/*.gif"/>
- <include name="**/*.jpg"/>
- <include name="**/*.png"/>
- </fileset>
- </copy>
-
- <copy todir="${dist.src.dir}/src/java" filtering="on">
- <fileset dir="${java.dir}"/>
- </copy>
-
- <copy todir="${dist.src.dir}/src/scratchpad" filtering="off">
- <fileset dir="${scratchpad.dir}"/>
- </copy>
-
- <copy todir="${dist.src.dir}/src/testcases" filtering="off">
- <fileset dir="${test.dir}"/>
- </copy>
-
- <copy todir="${dist.src.dir}/docs">
- <fileset dir="${build.docs}"/>
- </copy>
- <copy todir="${dist.src.dir}/docs/apidocs">
- <fileset dir="${build.javadocs}"/>
- </copy>
-
- <copy todir="${dist.src.dir}">
- <fileset dir="${docs.dir}">
- <include name="changes.xml, todo.xml"/>
- </fileset>
- </copy>
-
- <copy todir="${dist.src.dir}" filtering="on">
- <fileset dir=".">
- <include name="README.txt"/>
- <include name="legal/*"/>
- <include name="*.bat"/>
- <include name="*.sh"/>
- <include name="*.xml"/>
- </fileset>
- </copy>
-
- <chmod perm="+x" file="${dist.src.dir}/build.sh"/>
- <chmod perm="+x" file="${dist.src.dir}/tools/bin/antRun"/>
- <fixcrlf srcdir="${dist.src.dir}" includes="**.sh" eol="lf"/>
- <fixcrlf srcdir="${dist.src.dir}" includes="antRun" eol="lf"/>
- <fixcrlf srcdir="${dist.src.dir}" includes="**.bat" eol="crlf"/>
- </target>
-
- <!-- =================================================================== -->
- <!-- Packages the source distribution as .zip -->
- <!-- =================================================================== -->
- <target name="dist-src-zip" depends="dist-src"
- description="Generates the source distribution as a .zip file">
- <zip zipfile="${dist.target}/${dist.name}-src.zip"
- basedir="${dist.root}/source"/>
- </target>
-
- <!-- =================================================================== -->
- <!-- Packages the source distribution with .tar.gzip -->
- <!-- =================================================================== -->
- <target name="dist-src-tgz" depends="dist-src"
- description="Generates the source distribution as a .tar.gz file">
- <tar tarfile="${dist.target}/${dist.name}-src.tar"
- basedir="${dist.root}/source"
- longfile="gnu"/>
- <gzip zipfile="${dist.target}/${dist.name}-src.tar.gz"
- src="${dist.target}/${dist.name}-src.tar"/>
- </target>
-
- <!-- =================================================================== -->
- <!-- Creates the binary distribution -->
- <!-- =================================================================== -->
- <target name="dist-bin" depends="package, docs, javadocs"
- description="Prepares the binary distribution">
- <!-- Copy the html docs -->
- <mkdir dir="${dist.root}"/>
- <mkdir dir="${dist.bin.dir}"/>
- <mkdir dir="${dist.bin.dir}/lib"/>
- <mkdir dir="${dist.bin.dir}/docs"/>
- <mkdir dir="${dist.bin.dir}/docs/apidocs"/>
-
- <copy file="${build.dir}/${name}.jar" tofile="${dist.bin.dir}/lib/${name}-${version}.jar"/>
-
- <copy todir="${dist.bin.dir}/docs">
- <fileset dir="${build.docs}"/>
- </copy>
- <copy todir="${dist.bin.dir}/docs/apidocs">
- <fileset dir="${build.javadocs}"/>
- </copy>
-
- <copy todir="${dist.bin.dir}">
- <fileset dir="${docs.dir}">
- <include name="changes.xml, todo.xml"/>
- </fileset>
- </copy>
-
- <copy todir="${dist.bin.dir}" filtering="on">
- <fileset dir=".">
- <include name="README.txt"/>
- <include name="legal/*"/>
- </fileset>
- </copy>
-
- </target>
-
- <!-- =================================================================== -->
- <!-- Packages the binary distribution as .zip -->
- <!-- =================================================================== -->
- <target name="dist-bin-zip" depends="dist-bin"
- description="Generates the binary distribution as a .zip file">
- <zip zipfile="${dist.target}/${dist.name}-bin.zip"
- basedir="${dist.root}/bin"/>
- </target>
-
- <!-- =================================================================== -->
- <!-- Packages the binary distribution with .tar.gzip -->
- <!-- =================================================================== -->
- <target name="dist-bin-tgz" depends="dist-bin"
- description="Generates the binary distribution as a .tar.gz file">
- <tar tarfile="${dist.target}/${dist.name}-bin.tar"
- basedir="${dist.root}/bin"
- longfile="gnu"/>
- <gzip zipfile="${dist.target}/${dist.name}-bin.tar.gz"
- src="${dist.target}/${dist.name}-bin.tar"/>
- </target>
-
- <!-- =================================================================== -->
- <!-- Build all distributions -->
- <!-- =================================================================== -->
- <target name="dist-info" depends="init">
- <echo>**********************************************</echo>
- <echo>*</echo>
- <echo>* Build all distributions:</echo>
- <echo>* - source distribution for windows/unix.</echo>
- <echo>* - binary distribution for windows/unix.</echo>
- <echo>*</echo>
- <echo>* This may take a while...</echo>
- <echo>*</echo>
- <echo>***********************************************</echo>
- <echo/>
- </target>
-
- <!-- =================================================================== -->
- <!-- Build all distributions -->
- <!-- =================================================================== -->
- <target name="dist"
- depends="dist-info, dist-bin-tgz, dist-bin-zip, dist-src-tgz, dist-src-zip"
- description="* Generates all distributions (source/binary)">
- </target>
-
- <!-- =================================================================== -->
- <!-- Clean targets -->
- <!-- =================================================================== -->
- <target name="clean" depends="init" description="* Cleans the build directories">
- <delete dir="${build.dir}"/>
- </target>
-
- <target name="cleandocs" depends="init" description="* Cleans the build docs directories">
- <delete dir="${build.docs}"/>
- </target>
-
- <target name="distclean" depends="clean" description="* Cleans everything to the original state">
- <delete dir="${build.root}"/>
- <delete file="${dist.target}/${Name}-${version}.tar.gz"/>
- <delete file="${dist.target}/${Name}-${version}.tar"/>
- <delete file="${dist.target}/${Name}-${version}.zip"/>
- <delete file="${dist.target}/${Name}-${version}-src.tar.gz"/>
- <delete file="${dist.target}/${Name}-${version}-src.tar"/>
- <delete file="${dist.target}/${Name}-${version}-src.zip"/>
- <delete file="${dist.target}/${Name}-${version}-bin.tar.gz"/>
- <delete file="${dist.target}/${Name}-${version}-bin.tar"/>
- <delete file="${dist.target}/${Name}-${version}-bin.zip"/>
- <delete dir="${dist.root}"/>
- </target>
-
- <!-- =================================================================== -->
- <!-- Test targets -->
- <!-- =================================================================== -->
- <target name="test" depends="compile" description="Perform jUnit tests">
- <mkdir dir="${build.test}"/>
- <!-- Copy test files to build test dir -->
- <copy todir="${build.test}" filtering="on">
- <fileset dir="${test.dir}/${test.specific}"/>
- </copy>
- <!-- Compile tests -->
- <javac srcdir="${build.test}"
- destdir="${build.test}"
- debug="${debug}"
- optimize="${optimize}"
- deprecation="${deprecation}"
- target="${target.vm}">
- <classpath refid="classpath"/>
- <classpath>
- <pathelement path="${build.dest}" />
- </classpath>
- </javac>
- <junit printsummary="yes" haltonfailure="yes" fork="yes">
- <sysproperty key="UTIL.testdata.path"
- value="${test.dir}/org/apache/poi/util/data"/>
- <sysproperty key="HSSF.testdata.path"
- value="${test.dir}/org/apache/poi/hssf/data"/>
- <classpath>
- <pathelement location="${build.test}" />
- <pathelement location="${build.dest}" />
- <pathelement path="${java.class.path}" />
- </classpath>
- <classpath refid="classpath"/>
- <formatter type="plain" usefile="no" />
- <batchtest>
- <fileset dir="${build.test}">
- <include name="**/test/*TestCase.class"/>
- <include name="**/*Test.class" />
- <include name="**/Test*.class" />
- <exclude name="**/AllTest.class" />
- <exclude name="**/*$$*Test.class" />
- </fileset>
- </batchtest>
- </junit>
- </target>
-
- <!-- =================================================================== -->
- <!-- Fix line endings in src -->
- <!-- =================================================================== -->
- <target name="fixsrclf" depends="init" description="Fix lf in src directory (internal use only!)">
- <fixcrlf srcdir="${java.dir}" includes="**/*.java" eol="lf"/>
- </target>
-
+
</project>
<!-- End of file -->
diff --git a/src/contrib/builds/poibrowser.xml b/src/contrib/builds/poibrowser.xml
new file mode 100644
index 0000000000..68eb0cf974
--- /dev/null
+++ b/src/contrib/builds/poibrowser.xml
@@ -0,0 +1,28 @@
+<!-- try.xml ... these are trial build targets which are currently
+ undergoing testing. When ready they can be moved into the main build.xml -->
+
+<project default="poibrowser" basedir="../../" name="POIBrowser build">
+
+ <!-- =================================================================== -->
+ <!-- GUI Run Target -->
+ <!-- =================================================================== -->
+ <target name="poibrowser">
+ <taskdef name="user-input" classname="UserInput"
+ classpath="./tools/anttasks"/>
+
+ <property name="contrib.input.selection" value=""/>
+ <user-input name="contrib.input.selection">Please select a file to view </user-input>
+
+ <java classname="org.apache.poi.contrib.poibrowser.POIBrowser" fork="true">
+ <arg value="${contrib.input.selection}"/>
+ <classpath>
+ <pathelement location="build/jakarta-poi/classes"/>
+ <pathelement location="build/jakarta-poi/contrib/classes"/>
+ </classpath>
+ </java>
+ </target>
+
+
+</project>
+
+<!-- End of file -->
diff --git a/src/contrib/lib/placeholder b/src/contrib/lib/placeholder
new file mode 100644
index 0000000000..3c057009a0
--- /dev/null
+++ b/src/contrib/lib/placeholder
@@ -0,0 +1 @@
+CVS happy
diff --git a/tools/resources/stylesheets/announcement2readme.xsl b/tools/resources/stylesheets/announcement2readme.xsl
new file mode 100644
index 0000000000..63cbdefd07
--- /dev/null
+++ b/tools/resources/stylesheets/announcement2readme.xsl
@@ -0,0 +1,89 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <xsl:output method="html" indent="yes"/>
+
+ <xsl:template match="changes">
+ <xsl:variable name="version" select="@version"/>
+ <xsl:apply-templates select="document(@file,/)/changes/release[attribute::version=string($version)]"/>
+ </xsl:template>
+
+ <xsl:template match="announcement">
+ <style>
+ body { background-color: #FFFFFF }
+ p { font-size: 10pt; font-family: Helvetica, Arial, sans-serif }
+ li,ul { font-size: 10pt; font-family: Helvetica, Arial, sans-serif }
+ div { font-size: 10pt; font-family: Helvetica, Arial, sans-serif; font-style:italic }
+ h1 { font-size: 14pt; font-family: Helvetica, Arial, sans-serif; font-weight: bold }
+ h2 { font-size: 12pt; font-family: Helvetica, Arial, sans-serif; font-weight: bold }
+ h3 { font-size: 10pt; font-family: Helvetica, Arial, sans-serif; font-weight: bold }
+ A:link { color: #0000A0 } /* unvisited link */
+ A:visited { color: #A00000 } /* visited links */
+ A:active { color: #00A000 } /* active links */
+ </style>
+
+ <a name="sig"><h2>PGP Signatures</h2></a>
+
+ <p>Many of the distribution kits have been digitally signed (using
+ PGP). If so, there will be an accompanying
+ <samp><em>distribution</em>.asc</samp> file in the same directory as
+ the distribution. The PGP keys can be found in the distribution
+ directory at &lt;<a href="http://jakarta.apache.org/builds/jakarta-avalon/release/KEYS">
+ <samp>http://jakarta.apache.org/builds/jakarta-avalon/release/KEYS</samp></a>&gt;.</p>
+
+ <xsl:variable name="filename"><xsl:value-of
+ select="project/downloads/@name"/>-<xsl:value-of
+ select="project/changes/@version"/>-bin.tar.gz</xsl:variable>
+
+ <pre>Always test available signatures, <i>e.g.</i>,
+&gt; pgpk -a KEYS
+&gt; pgpv <xsl:value-of select="$filename"/>.asc
+<i>or</i>,
+&gt; pgp -ka KEYS
+&gt; pgp <xsl:value-of select="$filename"/>.asc
+<i>or</i>,
+&gt; gpg --import KEYS
+&gt; gpg --verify <xsl:value-of select="$filename"/>.asc
+</pre>
+
+ <xsl:for-each select="project">
+ <xsl:if test="downloads">
+ <h2>About <xsl:value-of select="title"/></h2>
+ <xsl:apply-templates select="."/>
+ </xsl:if>
+ </xsl:for-each>
+
+ </xsl:template>
+
+ <xsl:template match="project">
+
+ <p>For more information about <xsl:value-of select="title"/>, please go to
+ <a><xsl:attribute name="href"><xsl:value-of select="@site"/></xsl:attribute>
+ <xsl:value-of select="@site"/></a>.</p>
+
+ <!-- print out ChangeLog if present -->
+ <xsl:if test="changes">
+ <h3>ChangeLog for <xsl:value-of select="title"/></h3>
+ <xsl:apply-templates select="changes"/>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="ulink">
+ <a href="{@uri}"><xsl:value-of select="."/></a>
+ </xsl:template>
+
+ <xsl:template match="release">
+ <ul>
+ <xsl:for-each select="action">
+ <li>
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="@dev">
+ <xsl:text>[</xsl:text><xsl:value-of select="@dev"/><xsl:text>]</xsl:text>
+ </xsl:if>
+ </li>
+ </xsl:for-each>
+ </ul>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/tools/resources/stylesheets/announcement2txt.xsl b/tools/resources/stylesheets/announcement2txt.xsl
new file mode 100644
index 0000000000..9b03cc12b4
--- /dev/null
+++ b/tools/resources/stylesheets/announcement2txt.xsl
@@ -0,0 +1,174 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <xsl:output method="text" indent="no"/>
+
+ <xsl:template match="changes">
+ <xsl:variable name="version" select="@version"/>
+ <xsl:apply-templates select="document(@file,/)/changes/release[attribute::version=string($version)]"/>
+ </xsl:template>
+
+ <xsl:template name="print-title">
+ <xsl:param name="title"/>
+<xsl:variable name="text" select="normalize-space($title)"/>
+<xsl:value-of select="$text"/><xsl:text>
+</xsl:text>
+ <xsl:call-template name="line">
+ <xsl:with-param name="len" select="string-length($text)"/>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="announcement">
+ <text>
+ <xsl:call-template name="print-title">
+ <xsl:with-param name="title"><xsl:value-of select="title"/> Released</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="word-wrap">
+ <xsl:with-param name="text" select="normalize-space(abstract)"/>
+ <xsl:with-param name="count" select="0"/>
+ </xsl:call-template>
+ <xsl:text>
+
+</xsl:text>
+ <xsl:for-each select="project">
+ <xsl:call-template name="print-title">
+ <xsl:with-param name="title">About <xsl:value-of select="title"/></xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="."/>
+ <xsl:text>
+
+</xsl:text>
+ </xsl:for-each>
+ </text>
+ </xsl:template>
+
+ <xsl:template match="project">
+ <xsl:choose>
+ <xsl:when test="description/para">
+ <xsl:for-each select="description/para">
+ <xsl:call-template name="word-wrap">
+ <xsl:with-param name="text">
+ <xsl:apply-templates select="."/>
+ </xsl:with-param>
+ <xsl:with-param name="count" select="0"/>
+ </xsl:call-template>
+ <xsl:text>
+
+</xsl:text>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="word-wrap">
+ <xsl:with-param name="text">
+ <xsl:apply-templates select="description"/>
+ </xsl:with-param>
+ <xsl:with-param name="count" select="0"/>
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>
+For more information about </xsl:text>
+ <xsl:value-of select="title"/>
+ <xsl:text>, please go to
+</xsl:text>
+ <xsl:value-of select="@site"/>
+
+ <!-- print out ChangeLog if present -->
+ <xsl:if test="changes">
+ <xsl:text>
+
+ChangeLog for </xsl:text>
+ <xsl:value-of select="title"/>
+ <xsl:text>
+
+</xsl:text>
+ <xsl:apply-templates select="changes"/>
+ </xsl:if>
+
+ <!-- print out Downloads if present -->
+ <xsl:if test="downloads">
+ <xsl:text>
+Downloads for </xsl:text><xsl:value-of select="title"/> available at
+
+<xsl:value-of select="downloads/@base"/>/latest
+ </xsl:if>
+
+ </xsl:template>
+
+ <xsl:template match="para">
+ <xsl:apply-templates/>
+ <xsl:text>
+</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="ulink">
+ <xsl:value-of select="."/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="@uri"/>
+ <xsl:text>)</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="release">
+ <xsl:for-each select="action">
+ <xsl:text>*) </xsl:text>
+ <xsl:call-template name="word-wrap">
+ <xsl:with-param name="text" select="."/>
+ <xsl:with-param name="count" select="0"/>
+ </xsl:call-template><xsl:text> </xsl:text>
+ <xsl:if test="@dev">
+ <xsl:text>[</xsl:text><xsl:value-of select="@dev"/><xsl:text>]</xsl:text>
+ </xsl:if>
+ <xsl:text>
+
+</xsl:text>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="line">
+ <xsl:param name="len"/>
+ <xsl:if test="number($len) > 0">
+ <xsl:text>-</xsl:text>
+ <xsl:call-template name="line">
+ <xsl:with-param name="len" select="number($len)-1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="word-wrap">
+ <xsl:param name="text"/>
+ <xsl:param name="count"/>
+ <xsl:param name="mytext" select="normalize-space($text)"/>
+ <xsl:choose>
+ <xsl:when test="$count > 40">
+ <xsl:text>
+</xsl:text>
+ <xsl:call-template name="word-wrap">
+ <xsl:with-param name="text" select="$mytext"/>
+ <xsl:with-param name="count" select="0"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="not(contains($mytext,' '))">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$mytext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="word" select="substring-before($mytext,' ')"/>
+ <xsl:variable name="remainder" select="substring-after($mytext,' ')"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$word"/>
+ <xsl:if test="string-length($word) > 0">
+ <xsl:call-template name="word-wrap">
+ <xsl:with-param name="text" select="$remainder"/>
+ <xsl:with-param name="count" select="$count + string-length($word)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/tools/resources/stylesheets/bugzilla2patchqueue.xsl b/tools/resources/stylesheets/bugzilla2patchqueue.xsl
new file mode 100644
index 0000000000..5ebb1a9137
--- /dev/null
+++ b/tools/resources/stylesheets/bugzilla2patchqueue.xsl
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:html="http://www.w3.org/1999/xhtml">
+
+<!-- @author <a href="mailto:barozzi@nicolaken.com">Nicola Ken Barozzi</a> -->
+
+<xsl:template match="html:body">
+ <patch-queue>
+ <xsl:apply-templates/>
+ </patch-queue>
+</xsl:template>
+
+<xsl:template match="html:tr">
+ <xsl:if test="contains(@class,'th')">
+ <bug>
+ <xsl:attribute name="id"><xsl:value-of select="html:td[1]/html:a"/></xsl:attribute>
+ <xsl:attribute name="url">http://nagoya.apache.org/bugzilla/<xsl:value-of select="html:td[1]/html:a/@href"/></xsl:attribute>
+ <xsl:attribute name="severity"><xsl:value-of select="html:td[2]"/></xsl:attribute>
+ <xsl:attribute name="priority"><xsl:value-of select="html:td[3]"/></xsl:attribute>
+ <xsl:attribute name="platform"><xsl:value-of select="html:td[4]"/></xsl:attribute>
+ <xsl:attribute name="owner"><xsl:value-of select="html:td[5]"/></xsl:attribute>
+ <xsl:attribute name="status"><xsl:value-of select="html:td[6]"/></xsl:attribute>
+ <xsl:attribute name="resolution"><xsl:value-of select="html:td[7]"/></xsl:attribute>
+ <xsl:attribute name="summary"><xsl:value-of select="html:td[8]"/></xsl:attribute>
+ </bug>
+ </xsl:if>
+</xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()">
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/tools/resources/stylesheets/changelog.xsl b/tools/resources/stylesheets/changelog.xsl
new file mode 100644
index 0000000000..20f7cf9fb6
--- /dev/null
+++ b/tools/resources/stylesheets/changelog.xsl
@@ -0,0 +1,95 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+ <xsl:output indent="yes"/>
+
+ <xsl:param name="module">module</xsl:param>
+ <xsl:param name="cvsweb">cvsweb</xsl:param>
+
+ <xsl:template match="/">
+
+ <html>
+ <head>
+ <link rel="stylesheet" type="text/css" href="../../../../html/javadoc.css" title="Style"></link>
+ </head>
+ <body bgcolor="white">
+ <h1>Change Log</h1>
+
+ <xsl:apply-templates select="changelog/entry">
+ <xsl:sort order="descending" select="date" />
+ </xsl:apply-templates>
+
+ </body>
+ </html>
+
+ </xsl:template>
+
+ <xsl:template match="entry">
+
+ <h2>
+ <xsl:call-template name="escape-return">
+ <xsl:with-param name="string"><xsl:value-of select="msg"/></xsl:with-param>
+ </xsl:call-template>
+ </h2>
+ <p>
+ <b>
+ <xsl:apply-templates select="date"/>
+ by <xsl:value-of disable-output-escaping="yes" select="author"/>
+ </b>
+ </p>
+ <p>
+ <xsl:apply-templates select="file"/>
+ </p>
+ <hr/>
+
+ </xsl:template>
+
+ <xsl:template match="date">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="weekday">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="time">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="file">
+ <br/><a>
+ <xsl:choose>
+ <xsl:when test="string-length(prevrevision) = 0 ">
+ <xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?rev=<xsl:value-of select="revision" />&amp;content-type=text/x-cvsweb-markup</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?r1=<xsl:value-of select="revision" />&amp;r2=<xsl:value-of select="prevrevision"/>&amp;diff_format=h</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="name" />
+ </a>
+ </xsl:template>
+
+ <xsl:template name="escape-return">
+ <xsl:param name="string"/>
+ <!-- must be a better way to define a carrige return -->
+ <xsl:variable name="return"><xsl:text>
+</xsl:text>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="contains($string, $return)">
+ <xsl:value-of select="substring-before($string, $return)"/><br/>
+ <xsl:call-template name="escape-return">
+ <xsl:with-param name="string">
+ <xsl:value-of select="substring-after($string, $return)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/tools/resources/stylesheets/patchqueue2text4dev.xsl b/tools/resources/stylesheets/patchqueue2text4dev.xsl
new file mode 100644
index 0000000000..0ed5685e95
--- /dev/null
+++ b/tools/resources/stylesheets/patchqueue2text4dev.xsl
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<!-- @author <a href="mailto:barozzi@nicolaken.com">Nicola Ken Barozzi</a> -->
+
+ <xsl:output method="text"/>
+
+ <xsl:template match="/">-----------------------------------------------------------
+ This mail is generated automatically using
+ Jakarta Ant. Contents are automatically
+ downloaded from Apache's Bugzilla.
+-----------------------------------------------------------
+ Please do not reply to this mail.
+-----------------------------------------------------------
+
+***********************************************************
+ COCOON PATCH QUEUE UPDATE
+
+ patches in queue: <xsl:value-of select="count(patch-queue/bug)"/>
+***********************************************************
+
+ <xsl:for-each select="patch-queue/bug">
+-----------------------------------------------------------
+<xsl:value-of select="@id"/>:<xsl:value-of select="@summary"/>
+-----------------------------------------------------------
+<xsl:value-of select="@url"/>
+
+REVIEWER: <xsl:value-of select="@owner"/>
+RESOLUTION: <xsl:value-of select="@resolution"/>
+STATUS: <xsl:value-of select="@status"/>
+
+ </xsl:for-each>
+
+*************************that's it!************************
+
+------------------------patch HOWTO------------------------
+
+Send patches to http://nagoya.apache.org/bugzilla/
+specifying [PATCH] in the summary.
+Bugzilla sends a mail automatically to this list.
+Reviewers will mark it FIXED there when applied.
+Patches not sent to Bugzilla will not be reviewed.
+-----------------------------------------------------------
+This file is generated and updated automatically at least
+once a week, and the data is taken from Bugzilla.
+If you don't find the patch you submitted to bugzilla
+after one week, please notify cocoon-dev@xml.apache.org
+for assistance.
+-----------------------------------------------------------
+There is usually a HEAD branch and a previous-version
+branch that are maintained. Where will the patch go?
+1. If it is a bug fix it should go to both branches
+2. If something is totally new it goes into HEAD scratchpad.
+3. Something in between, but does not break backward
+ compatibility _may_ go into both (and may not)
+4. For everything else, a vote is required so
+ first it may go into HEAD, and then be VOTEd in order
+ to sync this into branch.
+Please note that structural changes have to be VOTEd first.
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()">
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/tools/resources/stylesheets/patchqueue2xdocs.xsl b/tools/resources/stylesheets/patchqueue2xdocs.xsl
new file mode 100644
index 0000000000..52d21f609e
--- /dev/null
+++ b/tools/resources/stylesheets/patchqueue2xdocs.xsl
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<!-- @author <a href="mailto:barozzi@nicolaken.com">Nicola Ken Barozzi</a> -->
+
+ <xsl:template match="/">
+
+ <xsl:text disable-output-escaping="yes">
+ <![CDATA[
+ <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.0//EN"
+ "dtd/document-v10.dtd">
+ ]]>
+ <!-- this file is automatically generated by build patchqueue-xdocs -->
+ </xsl:text>
+
+ <document>
+ <header>
+ <title>Patch Queue</title>
+ <authors>
+ <person name="Robin Green" email="greenrd@hotmail.com"/>
+ <person name="Nicola Ken Barozzi" email="barozzi@nicolaken.com"/>
+ </authors>
+ </header>
+
+ <body>
+
+ <s1 title="Introduction">
+
+ <p>
+ This is an <strong>informal</strong> list - in chronological order -
+ of some of the noteworthy patches that have been posted
+ to the <link href="mailto:cocoon-dev@xml.apache.org">cocoon-dev</link> mailing list.
+ These patches are not (yet) part of the Apache Cocoon project, but need reviewing for possible
+ inclusion. This system was instituted because, due to the large volume of mail and
+ the lack of time of the committers, some patches tended to get forgotten about. This
+ queue does not guarantee that any patch will be reviewed within a reasonable time frame,
+ but it does at least make them easier to find!
+ </p>
+
+ <p><strong>Reviewers wanted!</strong> - If you have time to review and/or test these patches,
+ we would be grateful for your time. Please post comments to the cocoon-dev mailing lists.
+ </p>
+
+ <p>
+ Before submitting a patch, please read the page on <connect href="contrib.xml">Third-Party
+ Contributions</connect>. The preferred submission method for patches is:
+ </p>
+
+ <ul>
+ <li>Post to cocoon-dev@xml.apache.org</li>
+ <li>Describe the patch, the reason for it and (if necessary) why this is important.</li>
+ <li>Generate the patch in <code>diff -u</code> format from CVS</li>
+ <li>Also generate a documentation patch or new file, if this is something that should be documented.
+ </li>
+ <li>Post as an attachment rather than inline (unless it is trivially small).</li>
+ </ul>
+
+ <p>Following the above guidelines will facilitate your patch being reviewed
+ and applied efficiently.</p>
+
+ </s1>
+
+ <s1 title="Patch Queue">
+
+ <p><strong> [Under Construction] </strong> Archive links will be added later.
+ <strong>Please do not bother the patch submitters/authors</strong> without first reading the
+ relevant post(s) in the <connect href="mail-archives.xml">mailing list archives.</connect>
+ </p>
+
+ <p>Vapourware will not be listed.</p>
+
+ <table>
+ <tr>
+ <th>id<!--and Link--></th>
+ <th>Summary</th>
+ <th>Reviewer</th>
+ <th>Resolution</th>
+ <th>Status</th>
+ </tr>
+ <xsl:for-each select="patch-queue/bug">
+ <tr>
+ <th>
+ <connect>
+ <xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
+ <xsl:value-of select="@id"/>
+ </connect>
+ </th>
+ <th><xsl:value-of select="@summary"/></th>
+ <th><xsl:value-of select="@owner"/></th>
+ <th><xsl:value-of select="@resolution"/></th>
+ <th><xsl:value-of select="@status"/></th>
+ </tr>
+ </xsl:for-each>
+ </table>
+
+ <p>See also additional list of patches to be added in <connect href="todo.xml">To Do</connect>.
+ </p>
+
+ </s1>
+ </body>
+ </document>
+
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()">
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/tools/targets/compile.xtarget b/tools/targets/compile.xtarget
new file mode 100644
index 0000000000..34afaa3cfe
--- /dev/null
+++ b/tools/targets/compile.xtarget
@@ -0,0 +1,165 @@
+ <!-- =================================================================== -->
+ <!-- Prepares the build directory -->
+ <!-- =================================================================== -->
+ <target name="prepare" depends="init">
+ <mkdir dir="${build.dir}"/>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Prepares the source code -->
+ <!-- =================================================================== -->
+ <target name="prepare-src" depends="prepare">
+ <mkdir dir="${build.src}"/>
+ <mkdir dir="${build.dest}"/>
+ <copy todir="${build.src}" filtering="on">
+ <fileset dir="${java.dir}"/>
+ </copy>
+
+ <mkdir dir="${build.scratchpad.src}"/>
+ <mkdir dir="${build.scratchpad.dest}"/>
+ <copy todir="${build.scratchpad.src}" filtering="on">
+ <fileset dir="${scratchpad.src}"/>
+ </copy>
+
+ <mkdir dir="${build.contrib.src}"/>
+ <mkdir dir="${build.contrib.dest}"/>
+ <copy todir="${build.contrib.src}" filtering="on">
+ <fileset dir="${contrib.src}"/>
+ </copy>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Compiles the source directory -->
+ <!-- =================================================================== -->
+ <target name="compile" depends="prepare-src"
+ description="Compiles the source code">
+ <copy todir="${build.dest}">
+ <fileset dir="${build.src}">
+ <include name="**"/>
+ <!--
+ <include name="**/Manifest.mf"/>
+ <include name="**/*.xsl"/>
+ <include name="**/*.roles"/>
+ <include name="**/*.xconf"/>
+ <include name="META-INF/**"/>
+ -->
+ </fileset>
+ </copy>
+
+ <echo message="Compiling with Java ${ant.java.version}, debug ${debug}, optimize ${optimize}, deprecation ${deprecation}"/>
+
+ <javac srcdir="${build.src}"
+ destdir="${build.dest}"
+ debug="${debug}"
+ optimize="${optimize}"
+ deprecation="${deprecation}"
+ target="${target.vm}"
+ nowarn="${nowarn}">
+ <classpath refid="classpath"/>
+ </javac>
+
+ <copy todir="${build.scratchpad.dest}">
+ <fileset dir="${build.scratchpad.src}">
+ <include name="**"/>
+ <!--
+ <include name="**/Manifest.mf"/>
+ <include name="**/*.xsl"/>
+ <include name="**/*.roles"/>
+ <include name="**/*.xconf"/>
+ <include name="META-INF/**"/>
+ -->
+ </fileset>
+ </copy>
+
+ <javac srcdir="${build.scratchpad.src}"
+ destdir="${build.scratchpad.dest}"
+ debug="${debug}"
+ optimize="${optimize}"
+ deprecation="${deprecation}"
+ target="${target.vm}">
+ <classpath refid="scratchpad.classpath"/>
+ </javac>
+
+
+ <copy todir="${build.contrib.dest}">
+ <fileset dir="${build.contrib.src}">
+ <include name="**"/>
+ <!--
+ <include name="**/Manifest.mf"/>
+ <include name="**/*.xsl"/>
+ <include name="**/*.roles"/>
+ <include name="**/*.xconf"/>
+ <include name="META-INF/**"/>
+ -->
+ </fileset>
+ </copy>
+
+ <javac srcdir="${build.contrib.src}"
+ destdir="${build.contrib.dest}"
+ debug="${debug}"
+ optimize="${optimize}"
+ deprecation="${deprecation}"
+ target="${target.vm}">
+ <classpath refid="contrib.classpath"/>
+ </javac>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Creates the jar file -->
+ <!-- =================================================================== -->
+ <target name="all" depends="package" description="Default target"/>
+
+ <target name="package" depends="compile" description="Generates the jar package">
+ <jar jarfile="${build.dir}/${name}.jar" manifest="${build.src}/Manifest.mf">
+ <fileset dir="${build.dest}">
+ <include name="**"/>
+ <include name="META-INF/**"/>
+ </fileset>
+ </jar>
+
+ <jar jarfile="${build.dir}/${scratchpad.name}.jar">
+ <fileset dir="${build.scratchpad.dest}">
+ <include name="**"/>
+ </fileset>
+ </jar>
+
+ <jar jarfile="${build.dir}/${contrib.name}.jar">
+ <fileset dir="${build.contrib.dest}">
+ <include name="**"/>
+ </fileset>
+ </jar>
+
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Copies the tools.jar to javac.jar in web-inf/lib -->
+ <!-- =================================================================== -->
+ <target name="prepare-tools-lib" depends="package" if="tools.jar.present">
+ <!-- NOTE: java.home is normally set by the JVM to the /jre directory -->
+ <copy file="${tools.jar}" tofile="${build.war}/WEB-INF/lib/javac.jar"/>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Clean targets -->
+ <!-- =================================================================== -->
+ <target name="clean" depends="init" description="* Cleans the build directories">
+ <delete dir="${build.dir}"/>
+ </target>
+
+ <target name="cleandocs" depends="init" description="* Cleans the build docs directories">
+ <delete dir="${build.docs}"/>
+ </target>
+
+ <target name="distclean" depends="clean" description="* Cleans everything to the original state">
+ <delete dir="${build.root}"/>
+ <delete file="${dist.target}/${Name}-${version}.tar.gz"/>
+ <delete file="${dist.target}/${Name}-${version}.tar"/>
+ <delete file="${dist.target}/${Name}-${version}.zip"/>
+ <delete file="${dist.target}/${Name}-${version}-src.tar.gz"/>
+ <delete file="${dist.target}/${Name}-${version}-src.tar"/>
+ <delete file="${dist.target}/${Name}-${version}-src.zip"/>
+ <delete file="${dist.target}/${Name}-${version}-bin.tar.gz"/>
+ <delete file="${dist.target}/${Name}-${version}-bin.tar"/>
+ <delete file="${dist.target}/${Name}-${version}-bin.zip"/>
+ <delete dir="${dist.root}"/>
+ </target>
diff --git a/tools/targets/contrib.xtarget b/tools/targets/contrib.xtarget
new file mode 100644
index 0000000000..d7e0ff46b1
--- /dev/null
+++ b/tools/targets/contrib.xtarget
@@ -0,0 +1,32 @@
+ <!-- =================================================================== -->
+ <!-- Interactive scratchpad builds -->
+ <!-- =================================================================== -->
+ <target name="contrib" depends="init" description="Interactive Contributors' Build">
+ <echo message="--------------------------------------------------------------"/>
+ <echo message=" "/>
+ <echo message=" ${fullname} ${version} CONTRIB"/>
+ <echo message=" "/>
+ <echo message="--------------------------------------------------------------"/>
+ <echo message="Building with ${ant.version}"/>
+ <echo message="using build file ${ant.file}"/>
+ <echo message="--------------------------------------------------------------"/>
+ <echo message=" "/>
+ <echo message=" These are CONTRIB BUILDS. They are not guaranteed to work."/>
+ <echo message=" You have been warned. "/>
+ <echo message=" "/>
+ <echo message=" poibrowser - POIBrowser 0.05 GUI POI Viewer"/>
+ <echo message=" -"/>
+ <echo message=" -"/>
+ <echo message=" -"/>
+ <echo message=" -"/>
+ <echo message=" -"/>
+ <echo message=" "/>
+ <taskdef name="user-input" classname="UserInput"
+ classpath="./tools/anttasks"/>
+
+ <property name="input.selection" value="poibrowser"/>
+ <user-input name="input.selection">Please select a target </user-input>
+
+ <ant antfile="src/contrib/builds/${input.selection}.xml"/>
+
+ </target>
diff --git a/tools/targets/dev.xtarget b/tools/targets/dev.xtarget
new file mode 100644
index 0000000000..7efc8dee68
--- /dev/null
+++ b/tools/targets/dev.xtarget
@@ -0,0 +1,209 @@
+ <!-- =================================================================== -->
+ <!-- Creates the source distribution -->
+ <!-- =================================================================== -->
+ <target name="dist-src" depends="docs, javadocs"
+ description="Prepares the source distribution">
+ <!-- Simply copy all and add the html docs -->
+ <mkdir dir="${dist.root}"/>
+ <mkdir dir="${dist.src.dir}"/>
+ <mkdir dir="${dist.src.dir}/lib"/>
+ <mkdir dir="${dist.src.dir}/src"/>
+ <mkdir dir="${dist.src.dir}/src/java"/>
+ <mkdir dir="${dist.src.dir}/src/documentation"/>
+ <mkdir dir="${dist.src.dir}/src/resources"/>
+ <mkdir dir="${dist.src.dir}/src/scratchpad"/>
+ <mkdir dir="${dist.src.dir}/src/testcases"/>
+ <mkdir dir="${dist.src.dir}/src/contrib"/>
+ <mkdir dir="${dist.src.dir}/docs"/>
+ <mkdir dir="${dist.src.dir}/docs/apidocs"/>
+ <mkdir dir="${dist.src.dir}/tools"/>
+
+ <!--
+ <copy todir="${dist.src.dir}/bin">
+ <fileset dir="${bin.dir}"/>
+ </copy> -->
+ <copy todir="${dist.src.dir}/tools">
+ <fileset dir="${tools.dir}"/>
+ </copy>
+
+ <copy todir="${dist.src.dir}/src/documentation">
+ <fileset dir="${build.context}"/>
+ </copy>
+
+ <copy todir="${dist.src.dir}/lib">
+ <fileset dir="${lib.dir}"/>
+ </copy>
+
+ <copy todir="${dist.src.dir}/src/resources" filtering="on">
+ <fileset dir="${resource.dir}">
+ <exclude name="**/*.gif"/>
+ <exclude name="**/*.jpg"/>
+ <exclude name="**/*.png"/>
+ </fileset>
+ </copy>
+
+ <copy todir="${dist.src.dir}/src/resources" filtering="off">
+ <fileset dir="${resource.dir}">
+ <include name="**/*.gif"/>
+ <include name="**/*.jpg"/>
+ <include name="**/*.png"/>
+ </fileset>
+ </copy>
+
+ <copy todir="${dist.src.dir}/src/java" filtering="on">
+ <fileset dir="${java.dir}"/>
+ </copy>
+
+ <copy todir="${dist.src.dir}/src/scratchpad" filtering="off">
+ <fileset dir="${scratchpad.dir}"/>
+ </copy>
+
+ <copy todir="${dist.src.dir}/src/contrib" filtering="off">
+ <fileset dir="${contrib.dir}"/>
+ </copy>
+
+ <copy todir="${dist.src.dir}/src/testcases" filtering="off">
+ <fileset dir="${test.dir}"/>
+ </copy>
+
+ <copy todir="${dist.src.dir}/docs">
+ <fileset dir="${build.docs}"/>
+ </copy>
+ <copy todir="${dist.src.dir}/docs/apidocs">
+ <fileset dir="${build.javadocs}"/>
+ </copy>
+
+ <copy todir="${dist.src.dir}">
+ <fileset dir="${docs.dir}">
+ <include name="changes.xml, todo.xml"/>
+ </fileset>
+ </copy>
+
+ <copy todir="${dist.src.dir}" filtering="on">
+ <fileset dir=".">
+ <include name="README.txt"/>
+ <include name="legal/*"/>
+ <include name="*.bat"/>
+ <include name="*.sh"/>
+ <include name="*.xml"/>
+ </fileset>
+ </copy>
+
+ <chmod perm="+x" file="${dist.src.dir}/build.sh"/>
+ <chmod perm="+x" file="${dist.src.dir}/tools/bin/antRun"/>
+ <fixcrlf srcdir="${dist.src.dir}" includes="**.sh" eol="lf"/>
+ <fixcrlf srcdir="${dist.src.dir}" includes="antRun" eol="lf"/>
+ <fixcrlf srcdir="${dist.src.dir}" includes="**.bat" eol="crlf"/>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Packages the source distribution as .zip -->
+ <!-- =================================================================== -->
+ <target name="dist-src-zip" depends="dist-src"
+ description="Generates the source distribution as a .zip file">
+ <zip zipfile="${dist.target}/${dist.name}-src.zip"
+ basedir="${dist.root}/source"/>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Packages the source distribution with .tar.gzip -->
+ <!-- =================================================================== -->
+ <target name="dist-src-tgz" depends="dist-src"
+ description="Generates the source distribution as a .tar.gz file">
+ <tar tarfile="${dist.target}/${dist.name}-src.tar"
+ basedir="${dist.root}/source"
+ longfile="gnu"/>
+ <gzip zipfile="${dist.target}/${dist.name}-src.tar.gz"
+ src="${dist.target}/${dist.name}-src.tar"/>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Creates the binary distribution -->
+ <!-- =================================================================== -->
+ <target name="dist-bin" depends="package, docs, javadocs"
+ description="Prepares the binary distribution">
+ <!-- Copy the html docs -->
+ <mkdir dir="${dist.root}"/>
+ <mkdir dir="${dist.bin.dir}"/>
+ <mkdir dir="${dist.bin.dir}/lib"/>
+ <mkdir dir="${dist.bin.dir}/docs"/>
+ <mkdir dir="${dist.bin.dir}/docs/apidocs"/>
+
+ <copy file="${build.dir}/${name}.jar" tofile="${dist.bin.dir}/lib/${name}-${version}.jar"/>
+
+ <copy todir="${dist.bin.dir}/docs">
+ <fileset dir="${build.docs}"/>
+ </copy>
+ <copy todir="${dist.bin.dir}/docs/apidocs">
+ <fileset dir="${build.javadocs}"/>
+ </copy>
+
+ <copy todir="${dist.bin.dir}">
+ <fileset dir="${docs.dir}">
+ <include name="changes.xml, todo.xml"/>
+ </fileset>
+ </copy>
+
+ <copy todir="${dist.bin.dir}" filtering="on">
+ <fileset dir=".">
+ <include name="README.txt"/>
+ <include name="legal/*"/>
+ </fileset>
+ </copy>
+
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Packages the binary distribution as .zip -->
+ <!-- =================================================================== -->
+ <target name="dist-bin-zip" depends="dist-bin"
+ description="Generates the binary distribution as a .zip file">
+ <zip zipfile="${dist.target}/${dist.name}-bin.zip"
+ basedir="${dist.root}/bin"/>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Packages the binary distribution with .tar.gzip -->
+ <!-- =================================================================== -->
+ <target name="dist-bin-tgz" depends="dist-bin"
+ description="Generates the binary distribution as a .tar.gz file">
+ <tar tarfile="${dist.target}/${dist.name}-bin.tar"
+ basedir="${dist.root}/bin"
+ longfile="gnu"/>
+ <gzip zipfile="${dist.target}/${dist.name}-bin.tar.gz"
+ src="${dist.target}/${dist.name}-bin.tar"/>
+ </target>
+
+
+ <!-- =================================================================== -->
+ <!-- Build all distributions -->
+ <!-- =================================================================== -->
+ <target name="dist"
+ depends="dist-info, dist-bin-tgz, dist-bin-zip, dist-src-tgz, dist-src-zip"
+ description="* Generates all distributions (source/binary)">
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Build all distributions -->
+ <!-- =================================================================== -->
+ <target name="dist-info" depends="init">
+ <echo>**********************************************</echo>
+ <echo>*</echo>
+ <echo>* Build all distributions:</echo>
+ <echo>* - source distribution for windows/unix.</echo>
+ <echo>* - binary distribution for windows/unix.</echo>
+ <echo>*</echo>
+ <echo>* This may take a while...</echo>
+ <echo>*</echo>
+ <echo>***********************************************</echo>
+ <echo/>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Fix line endings in src -->
+ <!-- =================================================================== -->
+ <target name="fixsrclf" depends="init" description="Fix lf in src directory (internal use only!)">
+ <fixcrlf srcdir="${java.dir}" includes="**/*.java" eol="lf"/>
+ </target>
+
+
diff --git a/tools/targets/docs.xtarget b/tools/targets/docs.xtarget
new file mode 100644
index 0000000000..1fdd6b9768
--- /dev/null
+++ b/tools/targets/docs.xtarget
@@ -0,0 +1,234 @@
+ <!-- =================================================================== -->
+ <!-- Prepares the docs -->
+ <!-- =================================================================== -->
+ <target name="prepare-docs" depends="init">
+
+ <mkdir dir="${build.context}"/>
+ <mkdir dir="${build.context}/images"/>
+ <mkdir dir="${build.docs}"/>
+ <mkdir dir="${build.dir}/work"/>
+
+ <!-- make filtered copy of XML docs -->
+ <copy todir="${build.context}" filtering="on">
+ <fileset dir="${context.dir}">
+ <exclude name="images/**"/>
+ </fileset>
+ </copy>
+
+ <!-- Copy images -->
+ <copy todir="${build.context}/images" filtering="off">
+ <fileset dir="${context.dir}/images"/>
+ </copy>
+
+ <!-- Copy entity catalog and entities -->
+ <copy todir="${build.context}/resources/entities" filtering="on">
+ <fileset dir="${resource.dir}/entities"/>
+ </copy>
+ <mkdir dir="${build.context}/WEB-INF/classes"/>
+ <move todir="${build.context}/WEB-INF/classes">
+ <fileset dir="${build.context}/resources/entities">
+ <include name="CatalogManager.properties"/>
+ </fileset>
+ </move>
+
+ </target>
+
+
+ <!-- =================================================================== -->
+ <!-- Set a variable if the generated docs are already up-to-date. -->
+ <!-- =================================================================== -->
+ <target name="docs_check" depends="init">
+ <uptodate property="docs.notrequired" targetfile="${build.docs}/index.html" >
+ <srcfiles dir="." includes="changes.xml,todo.xml"/>
+ <srcfiles dir="${context.dir}/xdocs" includes="**/*.xml"/>
+ </uptodate>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- If generated docs is already up-to-date, print a message saying so. -->
+ <!-- =================================================================== -->
+ <target name="docs_done" if="docs.notrequired">
+ <echo message="-------------------------------------------------------------"/>
+ <echo message="Not rebuilding docs, as they are up-to-date:"/>
+ <echo message=" ${build.docs}/index.html is more recent than"/>
+ <echo message=" todo.xml, changes.xml, ${context.dir}/xdocs/*.xml"/>
+ <echo message="-------------------------------------------------------------"/>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- The documentation system -->
+ <!-- =================================================================== -->
+ <target name="docs"
+ depends="package, prepare-docs, docs_check, docs_done"
+ unless="docs.notrequired"
+ description="* Generates the documentation">
+
+ <java classname="org.apache.cocoon.Main" fork="true" dir="${build.context}" failonerror="true">
+ <arg value="-c."/>
+ <arg value="-d../docs"/>
+ <arg value="-w../work"/>
+ <arg value="-l../work/cocoon.log"/>
+ <arg value="-uINFO"/>
+ <arg value="index.html"/>
+ <classpath>
+ <path refid="classpath"/>
+ <fileset dir="${build.dir}">
+ <include name="*.jar"/>
+ </fileset>
+ <fileset dir="${tools.lib.dir}">
+ <include name="*.jar"/>
+ </fileset>
+ <pathelement location="${tools.jar}"/>
+ <pathelement location="${build.context}/WEB-INF/classes"/>
+ </classpath>
+ </java>
+
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Set a variable if the generated printer docs are already up-to-date. -->
+ <!-- =================================================================== -->
+ <target name="printer-docs_check" depends="init">
+ <uptodate property="printer-docs.notrequired" targetfile="${build.docs.printer}/index.html" >
+ <srcfiles dir="." includes="changes.xml,todo.xml"/>
+ <srcfiles dir="${docs.dir}" includes="**/*.xml"/>
+ </uptodate>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- If generated printer docs is already up-to-date, print a message saying so. -->
+ <!-- =================================================================== -->
+ <target name="printer-docs_done" if="printer-docs.notrequired">
+ <echo message="-------------------------------------------------------------"/>
+ <echo message="Not rebuilding printer docs, as they are up-to-date:"/>
+ <echo message=" ${build.docs.printer}/index.html is more recent than"/>
+ <echo message=" todo.xml, changes.xml, ${docs.dir}/*.xml"/>
+ <echo message="-------------------------------------------------------------"/>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Create the announcements -->
+ <!-- =================================================================== -->
+ <target name="announcement" depends="prepare" description="* Creates the announcement for new releases">
+
+ <copy file="${project-info}" tofile="${build.project-info}" filtering="on"/>
+
+ <style basedir="./" destdir="./" style="${projectinfo2announcement}"
+ includes="project-info.xml" extension=".txt"/>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Create the text version of projectinfo -->
+ <!-- =================================================================== -->
+ <target name="projectinfo" depends="prepare" description="* Creates the text version of projectinfo">
+
+ <copy file="${project-info}" tofile="${build.project-info}" filtering="on"/>
+
+ <style basedir="./" destdir="./" style="${project-info2txt}"
+ includes="project-info.xml" extension=".txt"/>
+
+ </target>
+ <!-- =================================================================== -->
+ <!-- Prepares the printer-docs -->
+ <!-- =================================================================== -->
+ <target name="prepare-printer-docs" depends="prepare-docs">
+
+ <mkdir dir="${build.dir}/printer_documentation"/>
+
+ <!-- copy prepared docs -->
+ <copy todir="${build.dir}/printer_documentation" filtering="off">
+ <fileset dir="${build.context}">
+ </fileset>
+ </copy>
+
+ <!-- copy printer skin -->
+ <copy todir="${build.dir}/printer_documentation/stylesheets" filtering="off" overwrite="yes">
+ <fileset dir="${build.context}/stylesheets/printer_skin">
+ </fileset>
+ </copy>
+
+ </target>
+
+
+ <!-- =================================================================== -->
+ <!-- Generate printer-friendly HTML docs -->
+ <!-- =================================================================== -->
+ <target name="printer-docs" depends="package, prepare-printer-docs, printer-docs_check, printer-docs_done"
+ unless="printer-docs.notrequired"
+ description="* Generates printer-friendly documentation">
+ <mkdir dir="${build.docs.printer}"/>
+
+ <java classname="org.apache.cocoon.Main" fork="true" dir="${build.dir}/printer_documentation" failonerror="true">
+ <arg value="-c."/>
+ <arg value="-d../printer-docs"/>
+ <arg value="-w../work-printer"/>
+ <arg value="-l../work-printer/cocoon.log"/>
+ <arg value="-uINFO"/>
+ <arg value="index.html"/>
+ <classpath>
+ <path refid="classpath"/>
+ <fileset dir="${build.dir}">
+ <include name="*.jar"/>
+ </fileset>
+ <pathelement location="${tools.jar}"/>
+ <pathelement location="${build.context}/WEB-INF/classes"/>
+ </classpath>
+ </java>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Creates the web site -->
+ <!-- =================================================================== -->
+ <target name="site" depends="docs, javadocs"
+ description="Generates the web site (for site maintainers only)">
+ <mkdir dir="${site}"/>
+ <copy todir="${site}" filtering="off">
+ <fileset dir="${build.docs}">
+ </fileset>
+ </copy>
+ <copy todir="${site}/apidocs" filtering="off">
+ <fileset dir="${build.javadocs}"/>
+ </copy>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Set a variable if javadoc is already up-to-date. -->
+ <!-- =================================================================== -->
+ <target name="javadocs_check">
+ <uptodate property="javadocs.notrequired" targetfile="${build.javadocs}/packages.html" >
+ <srcfiles dir= "${build.src}" includes="**/*.java"/>
+ </uptodate>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- If javadoc is already up-to-date, print a message saying so. -->
+ <!-- =================================================================== -->
+ <target name="javadocs_done" if="javadocs.notrequired">
+ <echo message="-------------------------------------------------------------"/>
+ <echo message="Not rebuilding Javadocs, as they are up-to-date:"/>
+ <echo message=" ${build.javadocs}/packages.html is more recent than"/>
+ <echo message=" ${build.src}/**/*.java"/>
+ <echo message="-------------------------------------------------------------"/>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Creates the API documentation -->
+ <!-- =================================================================== -->
+ <target name="javadocs" depends="prepare-src, javadocs_check, javadocs_done"
+ unless="javadocs.notrequired"
+ description="* Generates the API documentation">
+ <mkdir dir="${build.javadocs}"/>
+ <javadoc packagenames="${packages}"
+ sourcepath="${build.src}"
+ destdir="${build.javadocs}"
+ author="true"
+ version="true"
+ use="false"
+ noindex="true"
+ windowtitle="${Name} API"
+ doctitle="${Name}"
+ bottom="Copyright &#169; ${year} ${fullname} project. All Rights Reserved."
+ stylesheetfile="${resource.dir}/javadoc.css">
+ <classpath refid="classpath"/>
+ </javadoc>
+ </target>
diff --git a/tools/targets/init.xtarget b/tools/targets/init.xtarget
new file mode 100644
index 0000000000..f791f0658a
--- /dev/null
+++ b/tools/targets/init.xtarget
@@ -0,0 +1,99 @@
+ <!-- =================================================================== -->
+ <!-- Initialization target -->
+ <!-- =================================================================== -->
+ <target name="init">
+ <tstamp/>
+
+ <property name="version" value="1.1-dev"/>
+ <property name="short.version" value="1.1"/>
+ <property name="year" value="2001-2002"/>
+
+ <echo message="--------------------------------------------------------------"/>
+ <echo message=" ${fullname} [${year}] "/>
+ <echo message="--------------------------------------------------------------"/>
+ <echo message="Building with ${ant.version}"/>
+ <echo message="using build file ${ant.file}"/>
+ <echo message="--------------------------------------------------------------"/>
+
+ <property name="debug" value="on"/>
+ <property name="optimize" value="off"/>
+ <property name="deprecation" value="off"/>
+ <property name="nowarn" value="on"/>
+ <property name="build.compiler" value="classic"/>
+ <property name="target.vm" value="1.2"/>
+
+ <property name="src.dir" value="./src"/>
+ <property name="java.dir" value="${src.dir}/java"/>
+ <property name="test.dir" value="${src.dir}/testcases"/>
+ <property name="test.specific" value=""/>
+ <property name="lib.dir" value="./lib"/>
+ <property name="bin.dir" value="./bin"/>
+ <property name="tools.dir" value="./tools"/>
+ <property name="tools.lib.dir" value="${tools.dir}/lib"/>
+ <property name="docs.dir" value="${src.dir}/documentation/xdocs"/>
+ <property name="images.dir" value="${src.dir}/documentation/images"/>
+ <property name="resource.dir" value="${src.dir}/resources"/>
+ <property name="context.dir" value="${src.dir}/documentation"/>
+
+ <property name="scratchpad.dir" value="${src.dir}/scratchpad"/>
+ <property name="scratchpad.src" value="${scratchpad.dir}/src"/>
+ <property name="scratchpad.lib" value="${scratchpad.dir}/lib"/>
+ <property name="scratchpad.name" value="${name}-scratchpad"/>
+
+ <property name="contrib.dir" value="${src.dir}/contrib"/>
+ <property name="contrib.src" value="${contrib.dir}/src"/>
+ <property name="contrib.lib" value="${contrib.dir}/lib"/>
+ <property name="contrib.name" value="${name}-contrib"/>
+
+ <property name="build.root" value="./build"/>
+ <property name="build.dir" value="${build.root}/${name}"/>
+ <property name="build.src" value="${build.dir}/src"/>
+ <property name="build.test" value="${build.dir}/testcases"/>
+ <property name="build.dest" value="${build.dir}/classes"/>
+ <property name="build.docs" value="${build.dir}/docs"/>
+ <property name="build.xdocs" value="${build.dir}/xdocs"/>
+ <property name="build.docs.printer" value="${build.dir}/printer-docs"/>
+ <property name="build.javadocs" value="${build.dir}/javadocs"/>
+ <property name="build.context" value="${build.dir}/documentation"/>
+ <property name="build.scratchpad" value="${build.dir}/scratchpad"/>
+ <property name="build.scratchpad.src" value="${build.scratchpad}/src"/>
+ <property name="build.scratchpad.dest" value="${build.scratchpad}/classes"/>
+ <property name="build.contrib" value="${build.dir}/contrib"/>
+ <property name="build.contrib.src" value="${build.contrib}/src"/>
+ <property name="build.contrib.dest" value="${build.contrib}/classes"/>
+ <property name="build.patchqueue" value="${build.dir}/patchqueue"/>
+
+ <property name="dist.root" value="./dist"/>
+ <property name="dist.name" value="${name}-${version}"/>
+ <property name="dist.dir" value="${dist.root}/${dist.name}"/>
+ <property name="dist.src.dir" value="${dist.root}/source/${dist.name}"/>
+ <property name="dist.bin.dir" value="${dist.root}/bin/${dist.name}"/>
+ <property name="dist.target" value="${dist.root}"/>
+
+ <property name="site" value="../xml-site/targets/${name}"/>
+
+ <property name="project-info" value="./project-info.xml"/>
+ <property name="build.project-info" value="${build.dir}/project-info.xml"/>
+ <property name="project-info2txt" value="${src.dir}/documentation/stylesheets/projectinfo2txt.xsl"/>
+ <property name="projectinfo2announcement" value="${src.dir}/documentation/stylesheets/projectinfo2announcement.xsl"/>
+ <property name="projectinfo2todo" value="${src.dir}/documentation/stylesheets/projectinfo2todo.xsl"/>
+
+ <!--
+ The location of tools.jar, relative to the JAVA_HOME home.
+ -->
+ <property name="tools.jar" value="${java.home}/../lib/tools.jar"/>
+ <available file="${tools.jar}" property="tools.jar.present"/>
+
+ <filter token="Name" value="${fullname}"/>
+ <filter token="name" value="${fullname}"/>
+ <filter token="year" value="${year}"/>
+ <filter token="version" value="${version}"/>
+ <filter token="date" value="${TODAY}"/>
+ <filter token="log" value="true"/>
+ <filter token="verbose" value="true"/>
+
+ <!-- compile the ant tasks -->
+ <mkdir dir="${tools.dir}/anttasks"/>
+ <javac srcdir="${tools.dir}/src" destdir="${tools.dir}/anttasks"/>
+
+ </target>
diff --git a/tools/targets/interactive.xtarget b/tools/targets/interactive.xtarget
new file mode 100644
index 0000000000..5915c338fe
--- /dev/null
+++ b/tools/targets/interactive.xtarget
@@ -0,0 +1,33 @@
+ <!-- =================================================================== -->
+ <!-- Interactive build -->
+ <!-- =================================================================== -->
+ <target name="interactive" description="Interactive Build" depends="init">
+ <echo message="--------------------------------------------------------------"/>
+ <echo message=" "/>
+ <echo message=" ${fullname} ${version} [${year}] "/>
+ <echo message=" "/>
+ <echo message="--------------------------------------------------------------"/>
+ <echo message="Building with ${ant.version}"/>
+ <echo message="using build file ${ant.file}"/>
+ <echo message="--------------------------------------------------------------"/>
+ <echo message=" These are the most common build targets."/>
+ <echo message=" You can also invoke them directly; see build.xml for more info. "/>
+ <echo message=" Builds will be in /build directory, distributions in /dist."/>
+ <echo message=" "/>
+ <echo message=" compile ------ compiles the source code "/>
+ <echo message=" docs --------- generates the html docs"/>
+ <echo message=" cleandocs ---- cleans the build docs directory"/>
+ <echo message=" javadocs ----- generates the API documentation"/>
+ <echo message=" test --------- performs the jUnit tests"/>
+ <echo message=" clean -------- cleans the build directory"/>
+ <echo message=" dist --------- creates src and bin distributions"/>
+ <echo message=" contrib ------ build-run contributed components"/>
+ <taskdef name="user-input" classname="UserInput"
+ classpath="./tools/anttasks"/>
+
+ <property name="input.selection" value="compile"/>
+ <user-input name="input.selection">Please select a target </user-input>
+
+ <antcall target="${input.selection}"/>
+
+ </target>
diff --git a/tools/targets/preinit.xtarget b/tools/targets/preinit.xtarget
new file mode 100644
index 0000000000..27a9ed9fcf
--- /dev/null
+++ b/tools/targets/preinit.xtarget
@@ -0,0 +1,65 @@
+ <!--
+ Give user a chance to override without editing this file
+ (and without typing -D each time he compiles it)
+ -->
+ <property file=".ant.properties"/>
+ <property file="${user.home}/.ant.properties"/>
+
+ <!--
+ these are here only for those who use jikes compiler. For other
+ developers this part makes no difference.
+ -->
+ <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"/>
+
+ <!-- =================================================================== -->
+ <!-- Project names -->
+ <!-- =================================================================== -->
+
+ <property name="fullname" value="JAKARTA POI"/>
+ <property name="Name" value="Jakarta Poi"/>
+ <property name="name" value="jakarta-poi"/>
+ <property name="packages" value="org.apache.poi.*"/>
+
+ <!-- =================================================================== -->
+ <!-- Indentify Classpath -->
+ <!-- =================================================================== -->
+ <path id="classpath">
+ <fileset dir="./lib/core">
+ <include name="*.jar"/>
+ </fileset>
+ <fileset dir="./lib/optional">
+ <include name="*.jar"/>
+ </fileset>
+ </path>
+
+ <path id="scratchpad.classpath">
+ <fileset dir="./lib/core">
+ <include name="*.jar"/>
+ </fileset>
+ <fileset dir="./lib/optional">
+ <include name="*.jar"/>
+ </fileset>
+ <fileset dir="./src/scratchpad/lib">
+ <include name="*.jar"/>
+ </fileset>
+ <!-- FIXME : how to build a path that references a property set in 'init' target ? -->
+ <pathelement path="./build/${name}/classes"/>
+ </path>
+
+ <path id="contrib.classpath">
+ <fileset dir="./lib/core">
+ <include name="*.jar"/>
+ </fileset>
+ <fileset dir="./lib/optional">
+ <include name="*.jar"/>
+ </fileset>
+ <fileset dir="./src/contrib/lib">
+ <include name="*.jar"/>
+ </fileset>
+ <!-- FIXME : how to build a path that references a property set in 'init' target ? -->
+ <pathelement path="./build/${name}/classes"/>
+ </path>
diff --git a/tools/targets/robot.xtarget b/tools/targets/robot.xtarget
new file mode 100644
index 0000000000..efb4740020
--- /dev/null
+++ b/tools/targets/robot.xtarget
@@ -0,0 +1,75 @@
+ <!-- =================================================================== -->
+ <!-- Gets pending patches from bugzilla and cleans html -->
+ <!-- =================================================================== -->
+ <target name="prepare-patchqueue" depends="init" description="Patch queue 2 mail">
+ <mkdir dir="${build.patchqueue}"/>
+ <get src="http://nagoya.apache.org/bugzilla/buglist.cgi?bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Cocoon+2&amp;short_desc=%5BPATCH%5D&amp;short_desc_type=anywordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;namedcmd=cocoon+patch+queue&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time"
+ dest="${build.patchqueue}/bugzillapatchqueue.html"
+ verbose="true"
+ usetimestamp="true"
+ ignoreerrors="true"/>
+
+ <taskdef name="jtidy" classname="JTidyTask"
+ classpath="${tools.dir}/anttasks"/>
+
+ <jtidy src="${build.patchqueue}/bugzillapatchqueue.html"
+ dest="${build.patchqueue}/bugzillapatchqueue.xhtml"
+ log="${build.patchqueue}/bugzillapatchqueue.log"
+ summary="true"
+ warn="true"/>
+
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Transforms bugzilla patches html into xml -->
+ <!-- =================================================================== -->
+ <target name="patchqueue-xml" depends="prepare-patchqueue">
+ <copy file="${tools.dir}/src/bugzilla2patchqueue.xsl" tofile="${build.patchqueue}/bugzilla2patchqueue.xsl"/>
+ <style basedir="${build.patchqueue}"
+ destdir="${build.patchqueue}"
+ includes="bugzillapatchqueue.xhtml"
+ extension=".xml"
+ style="bugzilla2patchqueue.xsl"/>
+
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Makes patches.xml for xdocs using bugzilla patches xml -->
+ <!-- =================================================================== -->
+ <target name="patchqueue-xdocs" depends="patchqueue-xml">
+ <copy file="${tools.dir}/src/patchqueue2xdocs.xsl" tofile="${build.patchqueue}/patchqueue2xdocs.xsl"/>
+
+ <style basedir="${build.patchqueue}"
+ destdir="${build.patchqueue}"
+ includes="bugzillapatchqueue.xml"
+ extension=".xdoc"
+ style="patchqueue2xdocs.xsl"/>
+
+ <copy file="${build.patchqueue}/bugzillapatchqueue.xdoc" tofile="${docs.dir}/patches.xml"/>
+
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Sends a notification of the current patch queue to the mailing list -->
+ <!-- =================================================================== -->
+ <target name="patchqueue" depends="patchqueue-xdocs">
+ <copy file="${tools.dir}/src/patchqueue2text4dev.xsl" tofile="${build.patchqueue}/patchqueue2text4dev.xsl"/>
+ <style basedir="${build.patchqueue}"
+ destdir="${build.patchqueue}"
+ includes="bugzillapatchqueue.xml"
+ extension=".txt"
+ style="patchqueue2text4dev.xsl"/>
+
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Sends a notification of the current patch queue to the mailing list -->
+ <!-- =================================================================== -->
+ <target name="patchqueue-notify" depends="patchqueue">
+ <mail from="patch-queue@nicolaken.com"
+ tolist="cocoon-dev@xml.apache.org"
+ mailhost="192.4.0.155"
+ subject="DO NOT REPLY [PATCH QUEUE] Summary ${TODAY}"
+ files="${build.patchqueue}/bugzillapatchqueue.txt"/>
+
+ </target>
diff --git a/tools/targets/scratchpad.xtarget b/tools/targets/scratchpad.xtarget
new file mode 100644
index 0000000000..cb995c273c
--- /dev/null
+++ b/tools/targets/scratchpad.xtarget
@@ -0,0 +1,32 @@
+ <!-- =================================================================== -->
+ <!-- Interactive scratchpad builds -->
+ <!-- =================================================================== -->
+ <target name="scratchpad" depends="init" description="Interactive Scratchpad Build">
+ <echo message="--------------------------------------------------------------"/>
+ <echo message=" "/>
+ <echo message=" ${fullname} ${version} SCRATCHPAD "/>
+ <echo message=" "/>
+ <echo message="--------------------------------------------------------------"/>
+ <echo message="Building with ${ant.version}"/>
+ <echo message="using build file ${ant.file}"/>
+ <echo message="--------------------------------------------------------------"/>
+ <echo message=" "/>
+ <echo message=" These are SCRATCHPAD BUILDS. They are not guaranteed to work."/>
+ <echo message=" You have been warned. "/>
+ <echo message=" "/>
+ <echo message=" --------------"/>
+ <echo message=" --------------"/>
+ <echo message=" --------------"/>
+ <echo message=" --------------"/>
+ <echo message=" --------------"/>
+ <echo message=" --------------"/>
+ <echo message=" "/>
+ <taskdef name="user-input" classname="UserInput"
+ classpath="./tools/anttasks"/>
+
+ <property name="input.selection" value=""/>
+ <user-input name="input.selection">Please select a target </user-input>
+
+ <ant antfile="src/scratchpad/${input.selection}/build.xml"/>
+
+ </target>
diff --git a/tools/targets/test.xtarget b/tools/targets/test.xtarget
new file mode 100644
index 0000000000..6ff67dd0f5
--- /dev/null
+++ b/tools/targets/test.xtarget
@@ -0,0 +1,40 @@
+ <!-- =================================================================== -->
+ <!-- Test targets -->
+ <!-- =================================================================== -->
+ <target name="test" depends="compile" description="Perform jUnit tests">
+ <mkdir dir="${build.test}"/>
+ <!-- Copy test files to build test dir -->
+ <copy todir="${build.test}" filtering="on">
+ <fileset dir="${test.dir}/${test.specific}"/>
+ </copy>
+ <!-- Compile tests -->
+ <javac srcdir="${build.test}"
+ destdir="${build.test}"
+ debug="${debug}"
+ optimize="${optimize}"
+ deprecation="${deprecation}"
+ target="${target.vm}">
+ <classpath refid="classpath"/>
+ <classpath>
+ <pathelement path="${build.dest}" />
+ </classpath>
+ </javac>
+ <junit printsummary="yes" haltonfailure="yes" fork="yes">
+ <classpath>
+ <pathelement location="${build.test}" />
+ <pathelement location="${build.dest}" />
+ <pathelement path="${java.class.path}" />
+ </classpath>
+ <classpath refid="classpath"/>
+ <formatter type="plain" usefile="no" />
+ <batchtest>
+ <fileset dir="${build.test}">
+ <include name="**/test/*TestCase.class"/>
+ <include name="**/*Test.class" />
+ <include name="**/Test*.class" />
+ <exclude name="**/AllTest.class" />
+ <exclude name="**/*$$*Test.class" />
+ </fileset>
+ </batchtest>
+ </junit>
+ </target>
diff --git a/tools/targets/try.xml b/tools/targets/try.xml
new file mode 100644
index 0000000000..695b2253c8
--- /dev/null
+++ b/tools/targets/try.xml
@@ -0,0 +1,15 @@
+<!-- try.xml ... these are trial build targets which are currently
+ undergoing testing. When ready they can be moved into the main build.xml -->
+
+<project default="trial-init" basedir="." name="Trial builds">
+
+ <!-- =================================================================== -->
+ <!-- Initialization target -->
+ <!-- =================================================================== -->
+ <target name="trial-init">
+
+ </target>
+
+</project>
+
+<!-- End of file -->
diff --git a/tools/targets/util.xtarget b/tools/targets/util.xtarget
new file mode 100644
index 0000000000..036d304af7
--- /dev/null
+++ b/tools/targets/util.xtarget
@@ -0,0 +1,15 @@
+ <!-- =================================================================== -->
+ <!-- Print out warnings for optional components -->
+ <!-- =================================================================== -->
+ <target name="optional-warnings"
+ description="Outputs warnings if some optional jars are missing from the environment">
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Try other builds that could go into this core build -->
+ <!-- =================================================================== -->
+ <target name="try"
+ depends="init"
+ description="Builds to try before including in main build">
+ <ant target="${try.target}" antfile="./tools/targets/try.xml"/>
+ </target>