blob: c8b9cde64638f763ac52d7f1776146a067ebba98 [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<!-- ===================================================================
Build file for Xalan-J 2.x - for use with the Jakarta Ant java build tool
Setup instructions:
Before running an Ant build, you must
- set the JAVA_HOME environment variable to the JDK root directory
- To build 'servlet' sample: Include Servlet SDK in your classpath
- To build docs/javadocs: use JDK 1.2.x or higher
Build Instructions:
To build, run
build.bat (win32) or build.sh (unix) - optionally with a target arg as indicated below -
in the directory where this file is located.
The batch/shell file sets up your classpath and calls java org.apache.tools.ant.Main
Build targets
This build file supports the following targets:
- compile compiles Xalan-J in ./build/classes.
- jar creates ./build/xalan.jar [the default target]
- samples compiles samples and puts classes in ./build/xalanxamples.jar
- servlet compiles sample servlets and puts classes in ./build/xalanservlet.jar
- docs generates the human-written documentation in ./build/docs
- javadocs [or apidocs] generates the API documentation in ./build/docs/apidocs
- compat.jar compiles compatibility tree and creates ./build/xalanj1compat.jar
- compat.apidocs generates javadoc for the compatibility jar
- xsltc.jar creates just the xsltc.jar
- xsltc.docs creates the XSLTC design documentation.
- clean purges the build tree.
- dist creates a complete distribution in ./xalan-j_x_x_x
- auto* targets used by automated build programs, without dependencies
- minitest compiles and runs the minitest in xml-xalan\test
- conftest compiles and runs the conftest in xml-xalan\test
- smoketest runs a pre-checkin smoketest (5 to 10 minutes).
- print.docs creates PDF documentation (requires fop.jar and w3c.jar).
If you build a target that depends on other targets, those other targets are created in
the correct order.
Authors:
Shane Curcuru <shane_curcuru@lotus.com>
Don Leslie <donald_leslie@lotus.com>
Copyright:
Copyright (c) 1999-2000 The Apache Software Foundation.
- Much of this file stolen from Stefano's xml-xerces build.xml
$Id$
==================================================================== -->
<project name="Xalan" default="jar" basedir=".">
<!-- =================================================================== -->
<!-- Defines paths/names of prerequisite jar files we compile against -->
<!-- =================================================================== -->
<!-- We keep checked-in known-good .jars here -->
<property name="bin.dir" value="./bin"/>
<!-- Allows external users/GUMP/Alexandria systems to replace .jars as needed -->
<property name="parser.jar.name" value="xerces.jar"/>
<property name="parser.jar" value="${bin.dir}/${parser.jar.name}"/>
<property name="bsf.jar.name" value="bsf.jar"/>
<property name="bsf.jar" value="${bin.dir}/${bsf.jar.name}"/>
<property name="stylebook.jar.name" value="stylebook-1.0-b3_xalan-2.jar"/>
<property name="stylebook.jar" value="${bin.dir}/${stylebook.jar.name}"/>
<property name="doclet.jar.name" value="xalan2jdoc.jar"/>
<property name="doclet.jar" value="${bin.dir}/${doclet.jar.name}"/>
<!-- Currently 18-Apr-01 used only for org.apache.xalan.xsltc -->
<property name="BCEL.jar.name" value="BCEL.jar"/>
<property name="BCEL.jar" value="${bin.dir}/${BCEL.jar.name}"/>
<property name="crimson.jar.name" value="crimson.jar"/>
<property name="crimson.jar" value="${bin.dir}/${crimson.jar.name}"/>
<property name="java_cup.jar.name" value="java_cup.jar"/>
<property name="java_cup.jar" value="${bin.dir}/${java_cup.jar.name}"/>
<property name="JLex.jar.name" value="JLex.jar"/>
<property name="JLex.jar" value="${bin.dir}/${JLex.jar.name}"/>
<property name="runtime.jar.name" value="runtime.jar"/>
<property name="runtime.jar" value="${bin.dir}/${runtime.jar.name}"/>
<property name="xml.jar.name" value="xml.jar"/>
<property name="xml.jar" value="${bin.dir}/${xml.jar.name}"/>
<!-- Defines general variables used by the other targets; name controls output xalan.jar -->
<property name="version" value="2_2_D6"/>
<property name="name" value="xalan"/>
<property name="Name" value="Xalan-Java"/>
<property name="year" value="2001"/>
<property name="build.compiler" value="classic"/>
<property name="debug" value="off"/>
<!-- Relative locations of source directories -->
<property name="metainf.dir" value="./src/META-INF"/>
<property name="src.dir" value="./src"/>
<property name="xpath.reldir" value="org/apache/xpath"/>
<property name="xalan.reldir" value="org/apache/xalan"/>
<property name="xsltc.reldir" value="${xalan.reldir}/xsltc"/>
<property name="trax.reldir" value="javax/xml/transform"/>
<property name="serialize.reldir" value="org/apache/serialize"/>
<property name="serializer.reldir" value="org/apache/xalan/serialize"/>
<property name="jaxp.reldir" value="javax/xml/parsers"/>
<property name="sax.reldir" value="org/xml/sax"/>
<property name="w3c.reldir" value="org/w3c"/>
<!-- Build and distribution output areas -->
<property name="build.dir" value="./build"/>
<property name="build.xalan.jar" value="${build.dir}/${name}.jar"/>
<property name="build.xsltc.jar" value="${build.dir}/xsltc.jar"/>
<property name="build.classes" value="${build.dir}/classes"/>
<property name="build.docs" value="${build.dir}/docs"/>
<property name="build.samples" value="${build.dir}/samples"/>
<property name="build.apidocs" value="${build.docs}/apidocs"/>
<property name="dist.file" value="${name}-j_${version}"/>
<property name="dist.dir" value="${build.dir}/${dist.file}"/>
<!-- Xalan-J1 compatability stuff. -->
<property name="compat.jar" value="xalanj1compat.jar"/>
<property name="compat.src.dir" value="./compat_src"/>
<property name="build.compat.classes" value="${build.dir}/compat_classes"/>
<property name="build.compat.jar" value="${build.dir}/${compat.jar}"/>
<property name="build.compat.apidocs" value="${build.docs}/compat_apidocs"/>
<!-- Documentation and samples information -->
<property name="version.file" value="${xalan.reldir}/processor/XSLProcessorVersion.java"/>
<property name="samples.dir" value="./samples"/>
<property name="xdocs.dir" value="./xdocs"/>
<property name="xdocs.book" value="${xdocs.dir}/sources/xalan-jlocal.xml"/>
<property name="xdocs.style" value="${xdocs.dir}/style"/>
<property name="xalanonly-styledocs"
value="dtd/xsl-html40s.dtd,dtd/spec.dtd,stylesheets/patterns.xsl,stylesheets/notice.xsl,stylesheets/spec.xsl,stylesheets/done.xsl,loaderdesign.xml,stylesheets/design2project.xsl,stylesheets/designdoc2html.xsl,stylesheets/xml2fo.xsl"/>
<property name="xalan.cmdline.class" value="org.apache.xalan.xslt.Process"/>
<property name="doc.generator" value="org.apache.stylebook.StyleBook"/>
<property name="doc.generator.styletargz" value="${xdocs.dir}/xml-site-style.tar.gz"/>
<property name="doc.generator.styletar" value="${xdocs.dir}/xml-site-style.tar"/>
<property name="site.root" value="./xml-site"/>
<property name="site.dir" value="${site.root}/target/xalan-j"/>
<property name="site.book" value="${xdocs.dir}/sources/xalan-jsite.xml"/>
<path id="docs.class.path">
<pathelement location="${bsf.jar}" />
<pathelement location="${stylebook.jar}" />
<pathelement location="${doclet.jar}" />
<pathelement location="${build.xalan.jar}" />
<pathelement path="${java.class.path}" />
</path>
<!-- References to various automated test locations/parameters -->
<property name="tests.dir" value="../test/java/"/>
<property name="test.loggingLevel" value="5"/>
<!-- The excluded lre tests are at issue or are new bugs, and should be
included as soon as they are resolved. -->
<!-- The attribset40+ tests concern Erratum E26, which has convoluted verbiage. Need to determine what E26 means in practical terms, then fix any bugs. -->
<property name="test.excludes" value="extendx07.xsl;extendx13.xsl;processorinfo03.xsl;attribset40.xsl;attribset42.xsl;attribset43.xsl;impincl18.xsl;impincl12.xsl;lre02.xsl;lre03.xsl;lre07.xsl;lre10.xsl;lre12.xsl;lre21.xsl"/>
<property name="test.embedded" value="embed01.xsl;embed02.xsl;embed07.xsl"/>
<!-- =================================================================== -->
<!-- Creates output build directories and doc prerequistes -->
<!-- =================================================================== -->
<target name="prepare">
<mkdir dir="${build.dir}"/>
<mkdir dir="${build.classes}"/>
<!-- Note that all testing-related targets *must* depend on
this target, either directly or indirectly, to get
the tests-available property set for them.
-->
<available file="${tests.dir}" property="tests-available" />
<available property="xerces.present"
classname="org.apache.xerces.parsers.SAXParser"/>
</target>
<!-- Must depend on jar since we use Xalan to process xml files -->
<target name="prepare.docs" depends="jar">
<mkdir dir="${build.docs}"/>
<mkdir dir="${build.apidocs}"/>
<gunzip src="${doc.generator.styletargz}"/>
<untar src="${doc.generator.styletar}" dest="${xdocs.dir}"/>
<delete file="${doc.generator.styletar}"/>
<echo message="Transform todo.xml and put the result in ${build.docs}"/>
<java fork="yes" classname="${xalan.cmdline.class}">
<classpath refid="docs.class.path" />
<arg line="-in todo.xml -xsl todo.xsl -out build/docs/todo.html"/>
</java>
<!-- We use a Notes agent to periodically extract Xalan-Java 2 commits from our team database into commits.xml. The following operation
transforms commits.xml (just including source code commits) and puts the result in xdocs/sources/xalan for inclusion in the
readme.xml -->
<echo message="Transform commits.xml and put the result in ${xdocs.dir}"/>
<java fork="yes" classname="${xalan.cmdline.class}" >
<classpath refid="docs.class.path" />
<arg line="-in commits.xml -xsl ${xdocs.style}/stylesheets/done.xsl -out xdocs/sources/xalan/DONE"/>
</java>
<echo message="Generate Xalan-J 2.x design document"/>
<java fork="yes" classname="${doc.generator}" >
<classpath refid="docs.class.path" />
<arg line="loaderConfig=sbk:/style/loaderdesign.xml targetDirectory=./build/docs/design/
./xdocs/sources/xalandesign.xml ./xdocs/style"/>
</java>
</target>
<!-- =================================================================== -->
<!-- Compile entire source tree - except Xalan-J 1 compatability classes -->
<!-- =================================================================== -->
<target name="compile" depends="prepare"
description="Compile Xalan-J 2.x (skips 1.x compat and XSLTC)" >
<echo message="compile entire source tree and copy .properties and .res files to build tree."/>
<!-- Note: split compile into separate javac steps to avoid JDK 1.1.8 bug reported at:
http://developer.java.sun.com/developer/bugParade/bugs/4043508.html
which causes an error like:
[javac] E:\builds\xml-xalan\java\src\org\apache\xalan\templates\ElemTemplate.java:108: Cyclic class inheritance or scoping.
-->
<!-- Compile our copy of JAXP 1.1 classes -->
<javac srcdir="${src.dir}"
destdir="${build.classes}"
includes="javax/**/*.java"
debug="${debug}"/>
<!-- Compile our copy of DOM Level 2 final draft, SAX 2.0 classes -->
<javac srcdir="${src.dir}"
destdir="${build.classes}"
includes="org/w3c/**/*.java,org/xml/**/*.java"
debug="${debug}"/>
<!-- Compile XPath engine and some common utilities -->
<javac srcdir="${src.dir}"
destdir="${build.classes}"
debug="${debug}" >
<include name="org/apache/xml/**/*.java" />
<include name="${xpath.reldir}/**/*.java" />
<exclude name="**/CoroutineSAXFilterTest.java"
unless="xerces.present" />
<exclude name="**/CoroutineSAXParser_Xerces.java"
unless="xerces.present" />
</javac>
<!-- Compile Xalan main engine (but not xsltc package yet) -->
<javac srcdir="${src.dir}"
destdir="${build.classes}"
includes="${xalan.reldir}/**/*.java"
excludes="${xsltc.reldir}/**/*.java,${xalan.reldir}/lib/**/*.java,${xalan.reldir}/xslt/**/*.java"
debug="${debug}"/>
<!-- Compile various Xalan-specific extensions and command line class -->
<javac srcdir="${src.dir}"
destdir="${build.classes}"
includes="${xalan.reldir}/lib/**/*.java,${xalan.reldir}/xslt/**/*.java"
debug="${debug}"/>
<!-- Copy needed properties, resource, etc. files to be put into .jar file -->
<copy todir="${build.classes}">
<fileset dir="${src.dir}" includes="**/*.properties,**/*.res,**/javax.xml.parsers.*,**/javax.xml.transform.*"/>
</copy>
</target>
<!-- =================================================================== -->
<!-- Compile just the XSLTC compiler portion (to be integrated soon!) -->
<!-- =================================================================== -->
<path id="xsltc.class.path">
<pathelement location="${BCEL.jar}" />
<pathelement location="${JLex.jar}" />
<pathelement location="${java_cup.jar}" />
<pathelement location="${runtime.jar}" />
<pathelement location="${xml.jar}" />
<pathelement location="${crimson.jar}" />
<!-- build.classes needed for
org.apache.xalan.xsltc.util.JavaCupRedirect -->
<pathelement location="${build.classes}" />
<pathelement path="${java.class.path}" />
</path>
<!-- The xsltc.compile target should be rewritten to properly
do dependencies on the generated sources: right now, it
will always regenerate the sources, even if it's not needed
(which forces all later steps to re-run as well) -->
<target name="xsltc.compile" depends="prepare"
description="Compile just the XSLTC classes" >
<!-- The first step compiles the utils directpry, which includes
a special wrapper for the java_cup step next. -->
<echo message="Compiling XSLTC utilities"/>
<javac srcdir="${src.dir}"
destdir="${build.classes}"
includes="${xsltc.reldir}/util/**/*.java"
debug="${debug}">
<classpath refid="xsltc.class.path" />
</javac>
<!-- The second step generates sym.java and XPathParser.java, and the
last one generates XPathLexer.java. The lexiographical analyser
has to be generated after sym.java, so order is important. -->
<echo message="java_cup preparsing"/>
<java fork="no" failonerror="true" classname="org.apache.xalan.xsltc.util.JavaCupRedirect" >
<classpath refid="xsltc.class.path" />
<!-- We're using JavaCupRedirect to call the java_cup application -->
<arg line="-parser XPathParser -expect 0 -stdin ${src.dir}/${xsltc.reldir}/compiler/xpath.cup"/>
</java>
<echo message="java_cup move output files"/>
<move file="XPathParser.java" tofile="${src.dir}/${xsltc.reldir}/compiler/XPathParser.java"/>
<move file="sym.java" tofile="${src.dir}/${xsltc.reldir}/compiler/sym.java"/>
<echo message="JLex preparsing"/>
<java fork="no" failonerror="true" classname="JLex.Main" >
<classpath refid="xsltc.class.path" />
<arg line="-static ${src.dir}/${xsltc.reldir}/compiler/xpath.lex"/>
</java>
<echo message="JLex move output file"/>
<move file="${src.dir}/${xsltc.reldir}/compiler/xpath.lex.java" tofile="${src.dir}/${xsltc.reldir}/compiler/XPathLexer.java"/>
<echo message="Compiling remaining XSLTC classes"/>
<javac srcdir="${src.dir}"
destdir="${build.classes}"
includes="${xsltc.reldir}/**/*.java"
debug="${debug}">
<classpath refid="xsltc.class.path" />
</javac>
</target>
<target name="xsltc.jar" depends="xsltc.compile"
description="Jar just the xsltc.jar file" >
<jar jarfile="${build.xsltc.jar}" basedir="${build.classes}" >
<patternset><!-- relative to jar/@basedir -->
<include name="${xsltc.reldir}/**/*" />
</patternset>
</jar>
</target>
<!-- =================================================================== -->
<!-- Creates the xalan JAR -->
<!-- =================================================================== -->
<target name="jar" depends="compile"
description="Jar up xalan.jar" >
<jar jarfile="${build.xalan.jar}" manifest="src\MANIFEST.MF" basedir="${build.classes}" >
<patternset><!-- relative to jar/@basedir -->
<exclude name="${xsltc.reldir}/**/*" />
<exclude name="javax/xml/parsers/**" />
<exclude name="META-INF/services/javax.xml.parsers*" />
</patternset>
</jar>
</target>
<!-- =================================================================== -->
<!-- Creates the Xalan-J1 compatability JAR -->
<!-- =================================================================== -->
<target name="compat.jar" depends="jar"
description="Compile and jar Xalan-J 1.x backwards compat classes" >
<echo message="Compile and jar just the Xalan-J 1 compability API"/>
<mkdir dir="${build.compat.classes}"/>
<javac srcdir="${compat.src.dir}" classpath="${build.xalan.jar}:${java.class.path}"
destdir="${build.compat.classes}"
includes="**/*.java"
debug="${debug}"/>
<copy todir="${build.compat.classes}">
<fileset dir="${compat.src.dir}" includes="**/*.properties,**/*.res"/>
</copy>
<jar jarfile="${build.compat.jar}" manifest="src\MANIFEST.MF" basedir="${build.compat.classes}"/>
</target>
<!-- =================================================================== -->
<!-- Creates the Xalan-J1 compatability javadoc -->
<!-- =================================================================== -->
<target name="compat.javadocs" depends="jar"
description="Build javadocs for Xalan-J 1.x backwards compat classes" >
<mkdir dir="${build.compat.apidocs}"/>
<javadoc
public="true"
sourcepath="${compat.src.dir}"
overview="${compat.src.dir}/compatOverview.html"
packagenames="org.apache.xalan.xslt,org.apache.xalan.xpath,org.apache.xalan.xpath.xml"
author="true"
version="true"
use="true"
destdir="${build.compat.apidocs}"
windowtitle="Xalan-Java 1 Compatability"
doctitle="Xalan-Java 1 Compatability"
bottom="Copyright &#169; ${year} Apache XML Project. All Rights Reserved.">
<classpath refid="docs.class.path" />
</javadoc>
</target>
<!-- =================================================================== -->
<!-- Compiles the samples (servlet excluded) and jars the class files -->
<!-- =================================================================== -->
<target name="samples" depends="jar"
description="Compile and jar the samples (except servlet)" >
<property name="exclude" value="*.xml,*.xsl,*.txt,*.html,*.properties,*.out"/>
<mkdir dir="${build.samples}"/>
<!-- Since the samples are packageless, they must be compiled separately. -->
<javac srcdir="${samples.dir}/SimpleTransform" classpath="${java.class.path}:${build.xalan.jar}"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/UseStylesheetPI" classpath="${java.class.path}:${build.xalan.jar}"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/UseStylesheetParam" classpath="${java.class.path}:${build.xalan.jar}"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/SAX2SAX" classpath="${java.class.path}:${build.xalan.jar}"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/DOM2DOM" classpath="${java.class.path}:${build.xalan.jar}"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/Pipe" classpath="${java.class.path}:${build.xalan.jar}"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/UseXMLFilters" classpath="${java.class.path}:${build.xalan.jar}"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/Trace" classpath="${java.class.path}:${build.xalan.jar}"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/ApplyXPath" classpath="${java.class.path}:${build.xalan.jar}"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/trax" classpath="${java.class.path}:${build.xalan.jar}"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/extensions" classpath="${java.class.path}:${build.xalan.jar}"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<jar jarfile="${build.dir}/xalansamples.jar" basedir="${build.samples}"
includes="*.class"/>
</target>
<!-- =================================================================== -->
<!-- Compiles the sample servlet and jars the class files. -->
<!-- The javax.servlet and javax.servlet.http packages -->
<!-- must be on the classpath -->
<!-- =================================================================== -->
<target name="servlet" depends="jar"
description="Compile and jar the servlet samples" >
<echo message="To compile the sample servlets, javax.servlet and javax.servlet.http must be on the classpath"/>
<mkdir dir="${build.samples}/servlet"/>
<javac srcdir="${samples.dir}/servlet" classpath="${java.class.path}:${build.xalan.jar}"
destdir="${build.samples}"
debug="${debug}"/>
<copy todir="${build.samples}/servlet">
<fileset dir="${samples.dir}/servlet"
includes="media.properties,default.xsl,default2.xsl"/>
</copy>
<jar jarfile="${build.dir}/xalanservlet.jar"
basedir="${build.samples}"
includes="servlet/**"/>
</target>
<!-- =================================================================== -->
<!-- Compiles (does not jar) the translet samples in translets. -->
<!-- For time being, classes are generated in place. -->
<!-- To run these samples, add xsltc.jar, runtime.jar, BCEL.jar, -->
<!-- and java_cup.jar (all in the bin directory) to the classpath -->
<!-- -->
<!-- When we have straightened out classpath issues, -->
<!-- add samples in CompiledApplet, CompiledBrazil, and CompiledServlet -->
<!-- =================================================================== -->
<target name="xsltc.samples" depends="jar,xsltc.jar">
<javac srcdir="${samples.dir}/translets" classpath="${java.class.path}:${build.xsltc.jar}"
destdir="${samples.dir}/translets" excludes="${exclude}"
debug="${debug}"/>
</target>
<!-- =================================================================== -->
<!-- Generate HTML docs -->
<!-- =================================================================== -->
<target name="docs" depends="jar,prepare.docs,autodocs"
description="Build the documentation (overview, readme, etc.)" >
<echo message="docs is human-usable target with dependencies"/>
</target>
<target name="autodocs">
<echo message="autodocs is for automated build process, without dependencies"/>
<java fork="yes"
classname="${doc.generator}"
classpathref="docs.class.path" >
<arg line="targetDirectory=${build.docs} ${xdocs.book} ${xdocs.style}"/>
</java>
</target>
<!-- =================================================================== -->
<!-- Creates the API documentation -->
<!-- =================================================================== -->
<target name="javadocs" depends="jar,prepare.docs,autojavadocs"
description="Build the Javadocs for Xalan 2.x sources" >
<echo message="javadocs is human-usable target with dependencies"/>
</target>
<target name="autojavadocs">
<echo message="autojavadocs is for automated build process, without dependencies"/>
<!-- Ant ignores destdir arg if doclet is set, so must send to doclet in doclet subelement-->
<javadoc
public="true"
sourcepath="${src.dir}"
overview="${src.dir}/javadocOverview.html"
packagenames="org.apache.*,org.xml.*,org.w3c.*,javax.xml.*"
author="true"
version="true"
use="true"
windowtitle="${Name} 2"
doctitle="${Name} 2"
bottom="Copyright &#169; ${year} Apache XML Project. All Rights Reserved.">
<classpath refid="docs.class.path" />
<doclet name="xalanjdoc.Standard" path="${bin.dir}/xalan2jdoc.jar">
<param name="-d" value="${build.apidocs}"/>
</doclet>
<group title="Transformations API for XML (TrAX)" packages="javax.xml.transform*"/>
<group title="Java API for XML Parsing" packages="javax.xml.parsers"/>
<group title="Xalan Core"
packages="org.apache.xalan.processor:org.apache.xalan.templates:org.apache.xalan.transformer"/>
<group title="XPath" packages="org.apache.xpath*"/>
<group title="Document Table Model (DTM)" packages="org.apache.xml.dtm*"/>
<group title="Utilities" packages="org.apache.xml.utils*"/>
<group title="Xalan Other" packages="org.apache.xalan.client:org:org.apache.xalan.extensions:org.apache.xalan.res:org.apache.xalan.stree:org.apache.xalan.trace:org.apache.xalan.xslt"/>
<group title="Xalan Extensions" packages="org.apache.xalan.lib*"/>
<group title="Serializers" packages="org.apache.xalan.serialize"/>
<group title="SAX 2" packages="org.xml.sax*"/>
<group title="DOM 2" packages="org.w3c.dom*"/>
<group title="XSLTC Core"
packages="org.apache.xalan.xsltc*"/>
</javadoc>
</target>
<!-- =================================================================== -->
<!-- Cleans everything: build tree, site tree, style docs in -->
<!-- - build tree -->
<!-- - distribution tree -->
<!-- - site tree -->
<!-- - style docs expanded from xml-site-style.tar.gz. -->
<!-- (MUST update contents of ${xalanonly-styledocs} -->
<!-- if change contents of xml-site-style.tar.gz) -->
<!-- - Javadoc overview and packqage-level html docs placed -->
<!-- in the source tree -->
<!-- =================================================================== -->
<target name="clean" depends="xsltc.clean"
description="Clean up the build tree and any outputs" >
<delete dir="${build.dir}"/>
<delete dir="${site.root}"/>
<delete>
<fileset dir="${xdocs.style}" excludes="${xalanonly-styledocs}"/>
</delete>
</target>
<!-- Cleans just the generated sources from xsltc.compile -->
<target name="xsltc.clean"
description="Clean up the XSLTC generated sources" >
<delete file="${src.dir}/${xsltc.reldir}/compiler/XPathParser.java" />
<delete file="${src.dir}/${xsltc.reldir}/compiler/sym.java" />
<delete file="${src.dir}/${xsltc.reldir}/compiler/XPathLexer.java" />
</target>
<!-- =================================================================== -->
<!-- Creates the distribution -->
<!-- =================================================================== -->
<target name="dist" depends="jar,docs,javadocs,samples,servlet,compat.jar,compat.javadocs,xsltc.jar,xsltc.docs,autodist"
description="Create a .zip/.tar.gz distribution module" >
<echo message="dist is human-useable target for distribution, with all dependencies"/>
</target>
<target name="autodist">
<echo message="autodist is for automated build processes, without dependencies"/>
<mkdir dir="${dist.dir}"/>
<mkdir dir="${dist.dir}/bin"/>
<mkdir dir="${dist.dir}/src"/>
<mkdir dir="${dist.dir}/compat_src"/>
<mkdir dir="${dist.dir}/xdocs"/>
<mkdir dir="${dist.dir}/docs"/>
<mkdir dir="${dist.dir}/docs/apidocs"/>
<mkdir dir="${dist.dir}/docs/compat_apidocs"/>
<mkdir dir="${dist.dir}/samples"/>
<!-- Copy bin directory -->
<copy todir="${dist.dir}/bin">
<fileset dir="${bin.dir}"/>
</copy>
<!-- Copy sources and source documentation -->
<copy todir="${dist.dir}/src">
<fileset dir="${src.dir}"/>
</copy>
<copy todir="${dist.dir}/compat_src">
<fileset dir="${compat.src.dir}"/>
</copy>
<copy todir="${dist.dir}/xdocs">
<fileset dir="${xdocs.dir}"/>
</copy>
<!-- Copy built documentation and javadoc, and samples src and jars -->
<copy todir="${dist.dir}/docs">
<fileset dir="${build.docs}"/>
</copy>
<!-- HACK! delete 3 files longer than 100 chars to get around
tar problems with long filenames -sc 23-May-01
-->
<delete file="${dist.dir}/docs/apidocs/org/apache/xalan/transformer/class-use/TransformerImpl.ThreadControler.html"/>
<delete file="${dist.dir}/docs/apidocs/org/apache/xalan/xsltc/compiler/util/class-use/AttributeSetMethodGenerator.html"/>
<delete file="${dist.dir}/docs/apidocs/org/apache/xalan/xsltc/compiler/util/class-use/NodeSortRecordGenerator.html"/>
<copy todir="${dist.dir}/samples">
<fileset dir="${samples.dir}"/>
</copy>
<copy file="${build.dir}/xalansamples.jar" todir="${dist.dir}/bin"/>
<copy file="${build.dir}/xalanservlet.jar" todir="${dist.dir}/bin"/>
<!-- Copy various built .jar files into the bin directory (subject to change) -->
<copy file="${build.xalan.jar}" todir="${dist.dir}/bin"/>
<copy file="${build.compat.jar}" todir="${dist.dir}/bin"/>
<copy file="${build.xsltc.jar}" todir="${dist.dir}/bin"/>
<copy todir="${dist.dir}">
<fileset dir="." includes="readme.html,KEYS,License,build.xml,build.sh,build.bat,todo.xml,xsltc_todo.xml,todo.xsl,commits.xml"/>
</copy>
<zip zipfile="${build.dir}/${dist.file}.zip" basedir="${build.dir}" includes="${dist.file}/**"/>
<tar tarfile="${build.dir}/${dist.file}.tar" basedir="${build.dir}" includes="${dist.file}/**"/>
<gzip src="${build.dir}/${dist.file}.tar" zipfile="${build.dir}/${dist.file}.tar.gz"/>
</target>
<!-- =================================================================== -->
<!-- Creates the documentation tree for the org.apache.xml website -->
<!-- =================================================================== -->
<target name="site" depends="prepare.docs"
description="Build documentation for posting to the website" >
<mkdir dir="${site.dir}/apidocs"/>
<mkdir dir="${site.dir}/compat_apidocs"/>
<mkdir dir="${site.dir}/design"/>
<java fork="yes"
classname="${doc.generator}"
classpathref="docs.class.path" >
<arg line="targetDirectory=${site.dir} ${site.book} ${xdocs.style}"/>
</java>
<!-- put todo.html in the site directory -->
<copy file="${build.docs}/todo.html" todir="${site.dir}"/>
<!-- put xalan design doc in the site design subdir -->
<copy todir="${site.dir}/design">
<fileset dir="${build.docs}/design"/>
</copy>
<!-- put xsltc design doc in the site xsltc subdir -->
<copy todir="${site.dir}/xsltc">
<fileset dir="${build.docs}/xsltc"/>
</copy>
<!-- put in the javadoc -->
<copy todir="${site.dir}/apidocs">
<fileset dir="${build.apidocs}"/>
</copy>
<copy todir="${site.dir}/compat_apidocs">
<fileset dir="${build.compat.apidocs}"/>
</copy>
</target>
<!-- =================================================================== -->
<!-- Compiles and runs the minitest from xml-xalan\test, if present -->
<!-- =================================================================== -->
<path id="minitest.class.path">
<pathelement location="${parser.jar}" />
<pathelement location="${build.xalan.jar}" />
<pathelement location="${bsf.jar}" />
<pathelement path="${java.class.path}" />
</path>
<!-- Reference from the testing directory back to our directory,
used when calling testing targets to set the classpath for
the tests to include jars we just compiled.
-->
<property name="tests.backref" value="../../java/"/>
<target name="minitest" depends="prepare,jar,minitest-run,tests-not-available"
description="Run the Minitest from xml-xalan/test/java" >
<!-- This target explicitly depends on the jar target, since
without xalan.jar the tests won't compile/run.
We then call the worker target minitest-run to do
the work of running the minitest.
We finally call a helper target tests-not-available
to notify users that they need to checkout the tests
explicitly from CVS - but this only runs if needed.
-->
</target>
<target name="minitest-run" if="tests-available" depends="prepare" >
<echo message=" [minitest] Calling ${tests.dir}build.xml now to run minitest.xalan2" />
<ant dir="${tests.dir}" antfile="build.xml" target="minitest.xalan2" >
<!-- Set the below testxsl.jar.name so that it will create
minitest.jar instead of testxsl.jar; we only do this here
since this is a commonly-called developer target, and it's
good to differentiate this jar from the regular testing jar
(which has many more test classes in it).
-->
<property name="testxsl.jar.name" value="minitest.jar" />
<property name="prepend.class.path"
value="${tests.backref}${parser.jar}:${tests.backref}${build.xalan.jar}:${tests.backref}${bsf.jar}" />
<!-- Why doesn't the following refid work? I get an error referencing it.
<property name="prepend.class.path" refid="minitest.class.path" />
-->
</ant>
</target>
<!-- Called from various testing targets if the test dir doesn't exist. -->
<target name="tests-not-available" unless="tests-available" >
<echo message=" [tests] The tests do not seem to be present!" />
<echo message=" [tests] You must have checked out from CVS to run the tests," />
<echo message=" [tests] it is not included in binary distributions." />
<echo message=" [tests] See http://xml.apache.org/xalan-j/test/ for more info." />
</target>
<!-- =================================================================== -->
<!-- Compiles and runs the conformance test from xml-xalan\test, if present -->
<!-- =================================================================== -->
<!-- We should have a duplicate of minitest.class.path that
in the future this may need to include references to dirs
where Java-based extension tests keep their .classes.
-->
<target name="conftest" depends="prepare,jar,conftest-run,tests-not-available"
description="Run the ConformanceTest from xml-xalan/test/java" >
</target>
<target name="conftest-run" if="tests-available" depends="prepare" >
<echo message=" [conftest] Calling ${tests.dir}build.xml now to run conftest.xalan2" />
<ant dir="${tests.dir}" antfile="build.xml" target="conftest.xalan2" >
<property name="testxsl.jar.name" value="conftest.jar" />
<!-- Set name above so that it will create conftest.jar instead
of testxsl.jar - but, since the "ConformanceTest" depends
on so many testing classes, it may not be worth calling
this a different name from the default 'testxsl.jar'. It
does reduce confusion, however, for people who build and
run the tests directly from the testing directory, instead
of doing it from this directory.
-->
<property name="prepend.class.path"
value="${tests.backref}${parser.jar}:${tests.backref}${build.xalan.jar}:${tests.backref}${bsf.jar}" />
</ant>
</target>
<!-- =================================================================== -->
<!-- Compiles and runs the smoke test from xml-xalan\test, if present -->
<!-- =================================================================== -->
<target name="smoketest" depends="prepare,jar,smoketest-run,tests-not-available"
description="Run the SmokeTest (includes API tests and ConformanceTest)" >
</target>
<target name="smoketest-run" if="tests-available" depends="prepare" >
<ant dir="${tests.dir}" antfile="build.xml" target="smoketest-xalan2" >
<property name="prepend.class.path"
value="${tests.backref}${parser.jar}:${tests.backref}${build.xalan.jar}:${tests.backref}${bsf.jar}" />
</ant>
</target>
<!-- =================================================================== -->
<!-- Creates the todo list for the org.apache.xml website -->
<!-- =================================================================== -->
<target name="todo">
<java fork="yes"
classname="${xalan.cmdline.class}"
classpathref="docs.class.path" >
<arg line="-in todo.xml -xsl todo.xsl -out todo.html"/>
</java>
</target>
<!-- =================================================================== -->
<!-- Creates the xalan design document -->
<!-- =================================================================== -->
<target name="xalan-j2-design">
<java fork="yes"
classname="${doc.generator}"
classpathref="docs.class.path" >
<arg line="loaderConfig=sbk:/style/loaderdesign.xml targetDirectory=${build.dir}/docs/design/
${xdocs.dir}/sources/xalandesign.xml ${xdocs.style}"/>
</java>
</target>
<!-- =================================================================== -->
<!-- Use FOP to create preliminary print (pdf) doc -->
<!-- Note: fop.jar and xml.jar (from xml-fop) must be on classpath -->
<!-- This is VERY preliminary, not yet for inclusion in distribution -->
<!-- =================================================================== -->
<!--Collate the xml sources into a single xml source with a litle extra structure -->
<target name="print.docs" depends="prepare.docs">
<echo message="fop.jar and xml.jar must be on the classpath"/>
<java fork="yes"
classname="${xalan.cmdline.class}"
classpathref="docs.class.path" >
<arg line="-xsl ${xdocs.dir}/sources/xalan-collate.xsl
-out xdocs/sources/xalan/xalan-collate.xml"/>
</java>
<!-- Transform collation into Formatting Objects
(with a little work on links along the way) -->
<java fork="yes"
classname="${xalan.cmdline.class}"
classpathref="docs.class.path" >
<arg line="-in ${xdocs.dir}/sources/xalan/xalan-collate.xml
-param resourceFile '../../sources/xalan/resources.xml'
-param project ${Name}
-xsl ${xdocs.style}/stylesheets/xml2fo.xsl
-out build/docs/xalan-collate.fo"/>
</java>
<!-- Use FOP to generate a pdf file (classpath may need updating! -sc 18-Apr-01)-->
<java fork="yes"
classname="org.apache.fop.apps.CommandLine"
classpath="${java.class.path}:${build.xalan.jar}:${bin.dir}/fop.jar:${bin.dir}/w3c.jar">
<arg line="${build.docs}/xalan-collate.fo build/docs/xalan.pdf"/>
</java>
</target>
<!-- =================================================================== -->
<!-- for developers only; compiles xalan-j1 samples with compat jar and xalan-j2 xalan.jar-->
<target name="compat.samples" depends="jar,compat.jar"
description="Compile and jar Xalan-J 1.x backwards compat samples" >
<property name="exclude" value="*.xml,*.xsl,*.txt,*.html.*.properties"/>
<property name="samplesj1.dir" value="/xml-xalan/samples"/>
<property name="build.compat.samples" value="./build/compat_samples"/>
<mkdir dir="${build.compat.samples}"/>
<!--need to use the XalanJ2 XPathAPI, so cannot compile ApplyXPath as is -->
<javac srcdir="${samplesj1.dir}/Pipe" classpath="${build.compat.jar}:${build.xalan.jar}:${java.class.path}"
destdir="${build.compat.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samplesj1.dir}/SimpleTransform" classpath="${build.compat.jar}:${build.xalan.jar}:${java.class.path}"
destdir="${build.compat.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samplesj1.dir}/TransformToDom" classpath="${build.compat.jar}:${build.xalan.jar}:${java.class.path}"
destdir="${build.compat.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samplesj1.dir}/PureSAX" classpath="${build.compat.jar}:${build.xalan.jar}:${java.class.path}"
destdir="${build.compat.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samplesj1.dir}/UseStylesheetParam" classpath="${build.compat.jar}:${build.xalan.jar}:${java.class.path}"
destdir="${build.compat.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samplesj1.dir}/Servlet" classpath="${build.compat.jar}:${build.xalan.jar}:${java.class.path}"
destdir="${build.compat.samples}" excludes="${exclude}"
debug="${debug}"/>
<jar jarfile="${build.compat.samples}/xalanjcompatsamples.jar" basedir="${build.compat.samples}"
includes="*.class"/>
<!--put the servlet in a separate jar -->
<javac srcdir="${samplesj1.dir}/Servlet" classpath="${build.compat.jar}:${build.xalan.jar}:${java.class.path}"
destdir="${build.compat.samples}"
debug="${debug}"/>
<copy todir="${build.compat.samples}/servlet">
<fileset dir="${samplesj1.dir}/Servlet"
includes="media.properties,default.xsl,default2.xsl"/>
</copy>
<jar jarfile="${build.compat.samples}/xalancompatservlet.jar" basedir="${build.compat.samples}"
includes="servlet/**"/>
</target>
<!-- =================================================================== -->
<!-- Build XSLTC design documentation. Eventually intend to incorporate -->
<!-- XSLTC into the Xalan book. -->
<!-- =================================================================== -->
<target name="xsltc.prepare.docs" depends="prepare.docs">
<echo message="Transform xsltc_todo.xml and put the result in ${build.docs}/xsltc"/>
<mkdir dir="${build.docs}/xsltc"/>
<java fork="yes" classname="${xalan.cmdline.class}">
<classpath refid="docs.class.path" />
<arg line="-in xsltc_todo.xml -xsl todo.xsl -out build/docs/xsltc/todo.html"/>
</java>
</target>
<target name="xsltc.docs" depends="xsltc.prepare.docs">
<echo message="Build the XSLTC Architectural documentation"/>
<java fork="yes"
classname="${doc.generator}"
classpathref="docs.class.path" >
<arg line="targetDirectory=${build.docs}/xsltc ${xdocs.dir}/sources/xsltc.xml ${xdocs.style}"/>
</java>
</target>
</project>