| <!-- =========================================================================== |
| |
| |
| * =========================== * |
| | 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 --> |