blob: 2d3fb17f7f6dcce0b14097cccec081ff1c3e10e5 [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]
- docs generates the human-written documentation in ./build/docs
- javadocs [or apidocs] generates the API documentation in ./build/docs/apidocs
- 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 compile and run the minitest in xml-xalan\test
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 variables used by the other targets -->
<!-- =================================================================== -->
<property name="version" value="2_0_D04"/>
<property name="name" value="xalan"/>
<property name="Name" value="Xalan-Java"/>
<property name="year" value="2000"/>
<property name="build.compiler" value="classic"/>
<property name="debug" value="off"/>
<property name="mfinf.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="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"/>
<property name="build.dir" value="./build"/>
<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="samples.dir" value="./samples"/>
<property name="bin.dir" value="./bin"/>
<property name="xerces.jar" value="${bin.dir}/xerces.jar"/>
<property name="bsf.jar" value="${bin.dir}/bsf.jar"/>
<property name="dist.file" value="${name}-j_${version}"/>
<property name="dist.dir" value="${build.dir}/${dist.file}"/>
<property name="xdocs.dir" value="./xdocs"/>
<property name="version.file" value="org/apache/xalan/processor/XSLProcessorVersion.java"/>
<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"/>
<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"/>
<property name="site.book" value="${xdocs.dir}/sources/xalan-jsite.xml"/>
<!-- =================================================================== -->
<!-- Prepares the xdocs/style and the build directories -->
<!-- =================================================================== -->
<target name="prepare">
<mkdir dir="${build.dir}"/>
<mkdir dir="${build.classes}"/>
<available file="${minitest.dir}" property="minitest-available" />
</target>
<target name="prepare.docs" depends="prepare">
<gunzip src="${doc.generator.styletargz}"/>
<untar src="${doc.generator.styletar}" dest="${xdocs.dir}"/>
<delete file="${doc.generator.styletar}"/>
<mkdir dir="${build.docs}"/> <!-- transform todo.xml and put the result in build/docs -->
<java fork="yes" classname="org.apache.xalan.xslt.Process" classpath="${java.class.path}:${build.dir}/$xalan.jar">
<arg line="-in todo.xml -xsl todo.xsl -out ${build.docs}/todo.html"/>
</java>
<mkdir dir="${build.apidocs}"/>
</target>
<!-- =================================================================== -->
<!-- Copy over the source code -->
<!-- We're currently skipping this step, since it seems extraneous if
you're not going to be using the filtering stuff. -->
<!-- =================================================================== -->
<!-- =================================================================== -->
<!-- Compiles the source tree - xpath (independent xpath engine) -->
<!-- =================================================================== -->
<!-- Note: Still too many cross-dependencies to do this separately -->
<target name="compile.xpath" depends="prepare">
<javac srcdir="${src.dir}/${xpath.reldir}"
destdir="${build.classes}"
debug="${debug}" />
</target>
<!-- =================================================================== -->
<!-- Compiles the source tree - xalan (the processor) -->
<!-- =================================================================== -->
<!-- Note: Still too many cross-dependencies to do this separately -->
<target name="compile.xalan" depends="compile.xpath">
<javac srcdir="${src.dir}/${xalan.reldir}"
destdir="${build.classes}"
debug="${debug}"/>
</target>
<!-- =================================================================== -->
<!-- Compile entire source tree - except Xalan-J 1 compatability classes -->
<!-- =================================================================== -->
<target name="compile" depends="prepare"
description="Compile Xalan the normal way" >
<echo message="compile entire source tree and copy .properties and .res files to build tree."/>
<javac srcdir="${src.dir}"
destdir="${build.classes}"
includes="**/*.java"
debug="${debug}"/>
<copy todir="${build.classes}">
<fileset dir="${src.dir}" excludes="**/classes/**/*,**/msclasses/**/*"
includes="**/*.properties,**/*.res,**/javax.xml.parsers.*,**/javax.xml.transform.*"/>
</copy>
</target>
<!-- =================================================================== -->
<!-- Compiles other source trees -->
<!-- =================================================================== -->
<target name="compile.trax" depends="prepare">
<javac srcdir="${src.dir}"
destdir="${build.classes}"
includes="${trax.reldir}/**"
debug="${debug}"/>
</target>
<target name="compile.serialize" depends="prepare">
<javac srcdir="${src.dir}"
destdir="${build.classes}"
includes="${serialize.reldir}/**"
debug="${debug}"/>
</target>
<target name="compile.sax" depends="prepare">
<javac srcdir="${src.dir}/${sax.reldir}"
destdir="${build.classes}"
debug="${debug}"/>
</target>
<target name="compile.w3c" depends="prepare">
<javac srcdir="${src.dir}/${w3c.reldir}"
destdir="${build.classes}"
debug="${debug}"/>
</target>
<target name="compile.jaxp" depends="prepare">
<javac srcdir="${src.dir}/${jaxp.reldir}"
destdir="${build.classes}"
debug="${debug}"/>
</target>
<!-- =================================================================== -->
<!-- Creates the xalan JAR -->
<!-- =================================================================== -->
<target name="jar" depends="compile"
description="Jar up xalan.jar" >
<jar jarfile="${build.dir}/xalan.jar" manifest="src\MANIFEST.MF" basedir="${build.classes}"/>
</target>
<target name="package" depends="jar">
<!-- OK, what are the 'Apache-standard' names for various targets? -->
<echo message="package is an alias for jar"/>
</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.dir}/xalan.jar"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/UseStylesheetPI" classpath="${java.class.path}:${build.dir}/xalan.jar"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/UseStylesheetParam" classpath="${java.class.path}:${build.dir}/xalan.jar"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/SAX2SAX" classpath="${java.class.path}:${build.dir}/xalan.jar"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/DOM2DOM" classpath="${java.class.path}:${build.dir}/xalan.jar"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/Pipe" classpath="${java.class.path}:${build.dir}/xalan.jar"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/UseXMLFilters" classpath="${java.class.path}:${build.dir}/xalan.jar"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/Trace" classpath="${java.class.path}:${build.dir}/xalan.jar"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/ApplyXPath" classpath="${java.class.path}:${build.dir}/xalan.jar"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/trax" classpath="${java.class.path}:${build.dir}/xalan.jar"
destdir="${build.samples}" excludes="${exclude}"
debug="${debug}"/>
<javac srcdir="${samples.dir}/extensions" classpath="${java.class.path}:${build.dir}/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 just the servlet sample" >
<echo message="To compile and run the sample servlet, 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.dir}/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>
<!-- =================================================================== -->
<!-- Generate HTML docs -->
<!-- =================================================================== -->
<target name="docs" depends="prepare.docs,autodocs"
description="Build the framework 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}" classpath="${java.class.path}:${build.dir}/xalan.jar">
<arg line="targetDirectory=${build.docs} ${xdocs.book} ${xdocs.style}"/>
</java>
</target>
<!-- =================================================================== -->
<!-- Creates the API documentation -->
<!-- =================================================================== -->
<target name="javadocs" depends="prepare.docs,autojavadocs"
description="Build the Javadocs for Xalan sources" >
<echo message="javadocs is human-usable target with dependencies"/>
</target>
<target name="autojavadocs">
<echo message="autojavadocs is for automated build process, without dependencies"/>
<!-- generate trax.html, a TRaX overview document, and a package.html for each trax package
(the latter are generated with the the Redirect extension -->
<mkdir dir="${build.apidocs}/javax/xml/transform"/>
<java fork="yes" classname="org.apache.xalan.xslt.Process" classpath="${java.class.path}:${build.dir}/xalan.jar">
<arg line="-in ${xdocs.dir}/sources/trax/trax.xml
-param package-root '../../../src/'
-xsl ${xdocs.style}/stylesheets/spec.xsl
-out ${build.apidocs}/javax/xml/transform/trax.html"/>
</java>
<!-- Ant 1.2 ignores destdir arg if doclet is set, so must send to doclet in doclet subelement-->
<javadoc
classpath="${java.class.path}"
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.">
<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="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*"/>
</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"
description="Clean up the build" >
<delete dir="${build.dir}"/>
<delete dir="${site.root}"/>
<delete>
<fileset dir="${xdocs.style}" excludes="${xalanonly-styledocs}"/>
</delete>
</target>
<!-- =================================================================== -->
<!-- Creates the distribution -->
<!-- =================================================================== -->
<target name="dist" depends="docs,javadocs,samples,servlet,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}/xdocs"/>
<mkdir dir="${dist.dir}/docs"/>
<mkdir dir="${dist.dir}/docs/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}/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>
<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 xalan jar into the bin directory (subject to change) -->
<copy file="${build.dir}/xalan.jar" todir="${dist.dir}/bin"/>
<copy todir="${dist.dir}">
<fileset dir="." includes="README,README.html,CREDITS,KEYS,License,build.xml,build.sh,build.bat,todo.xml,todo.xsl"/>
</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">
<mkdir dir="${site.dir}/apidocs"/>
<java fork="yes" classname="${doc.generator}" classpath="${java.class.path}:${build.dir}/$xalan.jar">
<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}"/>
<copy todir="${site.dir}/apidocs">
<fileset dir="${build.apidocs}"/>
</copy>
</target>
<!-- =================================================================== -->
<!-- Compiles and runs the minitest from xml-xalan\test, if present -->
<!-- =================================================================== -->
<path id="minitest.class.path">
<pathelement location="${xerces.jar}" />
<pathelement location="${build.dir}/xalan.jar" />
<pathelement location="${bsf.jar}" />
<pathelement path="${java.class.path}" />
</path>
<property name="minitest.backref" value="../../java/"/>
<property name="minitest.dir" value="../test/java/"/>
<target name="minitest" depends="jar,minitest-run,minitest-not-available"
description="Run the Minitest from xml-xalan/test/java" >
</target>
<target name="minitest-run" if="minitest-available" >
<echo message=" [minitest] Calling ${minitest.dir}build.xml now to run minitest.xalan2" />
<ant dir="${minitest.dir}" antfile="build.xml" target="minitest.xalan2" >
<property name="name" value="minitest" /> <!-- Set this so that it will create minitest.jar instead of testxsl.jar -->
<property name="prepend.class.path"
value="${minitest.backref}${xerces.jar}:${minitest.backref}${build.dir}/xalan.jar:${minitest.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>
<target name="minitest-not-available" unless="minitest-available" >
<echo message=" [minitest] The Minitest does not seem to be present!" />
<echo message=" [minitest] You must have checked out from CVS to run the minitest," />
<echo message=" [minitest] it is not included in binary distributions." />
<echo message=" [minitest] See http://xml.apache.org/xalan-j/test/ for more info." />
</target>
<!-- =================================================================== -->
<!-- Creates the todo list for the org.apache.xml website -->
<!-- =================================================================== -->
<target name="todo">
<java fork="yes" classname="org.apache.xalan.xslt.Process" classpath="${java.class.path}:${build.dir}/$xalan.jar">
<arg line="-in todo.xml -xsl todo.xsl -out todo.html"/>
</java>
</target>
</project>