diff options
author | Andrew C. Oliver <acoliver@apache.org> | 2002-01-31 02:22:28 +0000 |
---|---|---|
committer | Andrew C. Oliver <acoliver@apache.org> | 2002-01-31 02:22:28 +0000 |
commit | 833d29b9e0dac737fb1608740c7582b54d462b5c (patch) | |
tree | 38def28b2ff11d77cb76b19b3ca5fba154ed61fa /build.xml | |
parent | 6c234ab6c8d9b392bc93f28edf13136b3c053894 (diff) | |
download | poi-833d29b9e0dac737fb1608740c7582b54d462b5c.tar.gz poi-833d29b9e0dac737fb1608740c7582b54d462b5c.zip |
Initial revision
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352063 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'build.xml')
-rw-r--r-- | build.xml | 1022 |
1 files changed, 1022 insertions, 0 deletions
diff --git a/build.xml b/build.xml new file mode 100644 index 0000000000..d124561fc7 --- /dev/null +++ b/build.xml @@ -0,0 +1,1022 @@ +<!-- =========================================================================== + + + * =========================== * + | POI Build System | + * =========================== * + by + + Nicola Ken Barozzi <barozzi@nicolaken.com> + Marc Johnson <mjohnson at apache dot org> + + extends + * =========================== * + | Apache Cocoon Build System | + * =========================== * + by + + 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 +originally developed for the Tomcat project but now used in many other +Apache projects and extended by many developers. + +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 +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 +property should be set to match the JVM you want to use. + +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 + + ./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. +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. + +Also, you'll note that reusing a single JVM instance for each task, increases +tremendously the performance of the whole build system, compared to other +tools (i.e. make or shell scripts) where a new JVM is started for each task. + + +Building on another directory +============================= + +Sometimes you might want to build on an external directory to keep the +distribution clean: no worries, this is just an environment property away. +Suppose you want to use the "../build" directory instead, you simply tipe + + [unix] ./build.sh -Dbuild.root=../build + [win32] .\build.bat -Dbuild.root=..\build + +By using the -Dxxx=yyy argument, you are setting environments in the JVM: Ant +is designed to give higher priority to system environments to allow you to +modify _any_ <property> that you can find in the building instructions below, +so it's just a matter of understanding what property you want to change +and you don't have to touch this file (which you shouldn't need to do). + + +Build targets +============= + +The build system is not only responsible of compiling the project into a jar +file, but is also responsible for creating the HTML documentation, javadocs, +distributions and web site. In fact, the file you have here is _exactly_ what +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 + + [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 +in the distribution while others not. +For each optional package which is not available, a warning is +printed. If you don't like these warnings, specify the property "omit.opt.warnings" +(build -Domit.opt.warnings). + +Distribution Version +==================== +When preparing a distribution for release, specify the version ID on +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 +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" + +or + +.\build.bat clean test -Dtest.specific="org/apache/poi/util" + + + Happy hacking from the POI 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> + + <!-- =================================================================== --> + <!-- 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> + + <!-- =================================================================== --> + <!-- 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&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&product=Cocoon+2&short_desc=%5BPATCH%5D&short_desc_type=anywordssubstr&long_desc=&long_desc_type=allwordssubstr&bug_file_loc=&bug_file_loc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&namedcmd=cocoon+patch+queue&newqueryname=&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> + + <!-- =================================================================== --> + <!-- 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> + + + <!-- =================================================================== --> + <!-- 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 (nearly beta...) --> + <!-- =================================================================== --> + <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> + + <!-- =================================================================== --> + <!-- 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> + + <!-- =================================================================== --> + <!-- 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 © ${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 --> |