Blob Blame History Raw
diff -Nur freemarker-2.3.13/build.xml freemarker-2.3.13.new/build.xml
--- freemarker-2.3.13/build.xml	2010-02-28 02:18:16.667624788 +0300
+++ freemarker-2.3.13.new/build.xml	2010-02-28 02:34:34.031253336 +0300
@@ -51,6 +51,7 @@
     <property name="lib.jsp12" location="lib/jsp-api-1.2.jar"/>
     <property name="lib.jsp20" location="lib/jsp-api-2.0.jar"/>
     <property name="lib.jsp21" location="lib/jsp-api-2.1.jar"/>
+    <property name="lib.el" location="lib/el-api.jar"/>
 	
     <property name="lib.jython" location="lib/jython.jar"/>
     <!-- If not overridden, use default -->
@@ -74,6 +75,7 @@
     <path id="compile.classpath">
         <path refid="compile.nojsp.classpath"/>
         <pathelement path="${lib.jsp21}"/>
+        <pathelement path="${lib.el}"/>
     </path>
 
     <path id="compile.jsp1.classpath">
@@ -104,7 +106,8 @@
         <pathelement path="${lib.saxpath}"/>
         <pathelement path="${lib.xalan}"/> <!-- Xalan is not included with Sun JRE 1.5 with the old classname! -->
         <pathelement path="${lib.servlet}"/>
-        <pathelement path="${lib.jsp21}"/>
+        <pathelement path="${lib.jsp21}"/>
+        <pathelement path="${lib.el}"/>
         <pathelement path="${lib.logkit}"/>
         <pathelement path="${lib.log4j}"/>
         <pathelement path="${src.dir}"/>
@@ -261,6 +264,7 @@
 
     <target name="fetchlibs" unless="all.libs.present" description="fetch build dependencies and put them in lib directory">
 	<mkdir dir="lib"/>
+<!--
 	<echo>Fetching libraries from server.</echo>
 	<get src="${libs.location}/README.txt" dest="lib/README.txt" usetimestamp="true"/>
 	<get src="${libs.location}/ant.jar" dest="lib/ant.jar" usetimestamp="true"/>
@@ -283,6 +287,7 @@
 	<get src="${libs.location}/jsp-api-2.0.jar" dest="lib/jsp-api-2.0.jar" usetimestamp="true"/>
 	<get src="${libs.location}/jsp-api-2.1.jar" dest="lib/jsp-api-2.1.jar" usetimestamp="true"/>
 	<get src="${libs.location}/xalan.jar" dest="lib/xalan.jar" usetimestamp="true"/>
+!-->
     </target>
 
     <target name="init">
@@ -433,7 +438,7 @@
     <target depends="init, prepare, javacc" name="compile"
             description="Compile Java source files">
         <mkdir dir="${build.classes.dir}"/>
-        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="lib/rt122.jar" source="1.2" target="1.2">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="lib/rt122.jar" source="6" target="6">
             <src path="${src.dir}"/>
             <patternset refid="freemarker.compile"/>
             <!-- src path="${build.javacc.dir}"/ -->
@@ -445,11 +450,11 @@
         <antcall target="compile-logkit"/>
         <antcall target="compile-jdk14"/>
         <antcall target="compile-jdk15"/>
-        <antcall target="compile-jsp1"/>
+<!--        <antcall target="compile-jsp1"/> -->
         <antcall target="compile-jsp2"/>
         <antcall target="compile-jython"/>
         <antcall target="compile-dom4j"/>
-        <antcall target="compile-jdom"/>
+<!--        <antcall target="compile-jdom"/> -->
         <antcall target="compile-xalan"/>
         <antcall target="compile-jaxen"/>
         <antcall target="compile-rhino"/>
@@ -461,7 +466,7 @@
     </target>
 
     <target name="compile-log4j" if="log4j.available">
-        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="6" source="6">
             <src path="${src.dir}"/>
             <classpath refid="compile.classpath"/>
             <patternset refid="freemarker.compile.log4j"/>
@@ -469,7 +474,7 @@
     </target>
 
     <target name="compile-logkit" if="logkit.available">
-        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="6" source="6">
             <src path="${src.dir}"/>
             <classpath refid="compile.classpath"/>
             <patternset refid="freemarker.compile.logkit"/>
@@ -493,7 +498,7 @@
     </target>
 
     <target name="compile-jython" if="jython.available">
-        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="6" source="6">
             <src path="${src.dir}"/>
             <classpath refid="compile.classpath"/>
             <patternset refid="freemarker.compile.jython"/>
@@ -501,7 +506,7 @@
     </target>
 
     <target name="compile-jsp1">
-        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="6" source="6">
             <src path="${src.dir}"/>
             <classpath refid="compile.jsp1.classpath"/>
             <patternset refid="freemarker.compile.jsp1"/>
@@ -509,7 +514,7 @@
     </target>
 
     <target name="compile-jsp2">
-        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="6" source="6">
             <src path="${src.dir}"/>
             <classpath refid="compile.jsp2.classpath"/>
             <patternset refid="freemarker.compile.jsp2"/>
@@ -517,7 +522,7 @@
     </target>
 
     <target name="compile-rhino" if="rhino.available">
-        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="6" source="6">
             <src path="${src.dir}"/>
             <classpath refid="compile.classpath"/>
             <patternset refid="freemarker.compile.rhino"/>
@@ -525,7 +530,7 @@
     </target>
 
     <target name="compile-dom4j" if="dom4j.available">
-        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="6" source="6">
             <src path="${src.dir}"/>
             <classpath refid="compile.classpath"/>
             <patternset refid="freemarker.compile.dom4j"/>
@@ -533,7 +538,7 @@
     </target>
 
     <target name="compile-jaxen" if="jaxen.available">
-        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="6" source="6">
             <src path="${src.dir}"/>
             <classpath refid="compile.classpath"/>
             <patternset refid="freemarker.compile.jaxen"/>
@@ -541,7 +546,7 @@
     </target>
 
     <target name="compile-jdom" if="jdom.available">
-        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="6" source="6">
             <src path="${src.dir}"/>
             <classpath refid="compile.classpath"/>
             <patternset refid="freemarker.compile.jdom"/>
@@ -553,7 +558,7 @@
                destdir="${build.classes.dir}"
                debug="on"
                optimize="off"
-               target="1.2" source="1.2">
+               target="6" source="6">
             <src path="${src.dir}"/>
             <classpath refid="compile.classpath"/>
             <patternset refid="freemarker.compile.xalan"/>
diff -Nur freemarker-2.3.13/build.xml~ freemarker-2.3.13.new/build.xml~
--- freemarker-2.3.13/build.xml~	1970-01-01 03:00:00.000000000 +0300
+++ freemarker-2.3.13.new/build.xml~	2010-02-28 02:26:40.360982530 +0300
@@ -0,0 +1,829 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Ant buildfile for 'FreeMarker' application. Compatible with Ant version 1.3.
+
+Authors:  Alex Petrushko <alpet@ocf.berkeley.edu>
+          Nicholas Cull <run2000@users.sourceforge.net>
+      Jonathan Revusky <jon@revusky.com>
+      Attila Szegedi <szegedia@users.sourceforge.net>
+
+Version: $Id: build.xml,v 1.138.2.4 2006/12/27 16:11:23 szegedia Exp $
+
+-->
+
+<project basedir="." default="jar" name="freemarker">
+
+    <property name="libs.location" value="http://freemarker.sourceforge.net/jarsforbuild"/>
+    <property name="repositoryRootDir" value="../../../"/>
+
+    <property file="src/freemarker/version.properties" />
+    <property name="src.dir" value="src"/>
+    <property name="lib.dir" value="lib"/>
+    <property name="examples.dir" value="examples"/>
+    <property name="build.dir" value="build"/>
+    <property name="build.examples.dir" value="build/examples"/>
+    <property name="build.jython-webapp.dir" value="${build.examples.dir}/jython-webapp"/>
+    <property name="build.classes.dir" value="build/classes"/>
+    <property name="build.javacc.dir" value="build/javacc"/>
+    <property name="build.javadoc.dir" value="build/api" />
+    <property name="testcase.dir" value="build/testcase"/>
+    <property name="dist.dir" value="build/dist"/>
+    <property name="dist.dir.versioned" value="${dist.dir}/freemarker-${version}"/>
+    <property name="docgen.dir" value="../docgen" />
+    <property name="javadoc.use" value="yes" /> <!-- when tar dir deepth limit is a problem, set to "no" -->
+
+    <property name="freemarker.tar" value="build/freemarker-${version}.tar" />
+    <property name="freemarker.gzip" value="${freemarker.tar}.gz" />
+
+    <property name="lib.jdom" location="lib/jdom.jar"/>
+    <property name="lib.jaxen" location="lib/jaxen.jar"/>
+    <property name="lib.xalan" location="lib/xalan.jar"/>
+    <property name="lib.saxpath" location="lib/saxpath.jar"/>
+    <property name="lib.log4j" location="lib/log4j.jar"/>
+    <property name="lib.logkit" location="lib/logkit.jar"/>
+    <property name="lib.xerces" location="lib/xerces.jar"/>
+    <property name="lib.junit" location="lib/junit.jar"/>
+    <property name="lib.dom4j" location="lib/dom4j.jar"/>
+    <property name="lib.struts" location="lib/struts.jar"/>
+    <property name="lib.rhino" location="lib/js.jar"/>
+    <property name="lib.servlet" location="lib/servlet.jar"/>
+    <property name="lib.jsp12" location="lib/jsp-api-1.2.jar"/>
+    <property name="lib.jsp20" location="lib/jsp-api-2.0.jar"/>
+    <property name="lib.jsp21" location="lib/jsp-api-2.1.jar"/>
+    <property name="lib.el" location="lib/el-api.jar"/>
+	
+    <property name="lib.jython" location="lib/jython.jar"/>
+    <!-- If not overridden, use default -->
+    <property name="boot.class.path" value="${sun.boot.class.path}"/>
+    <!-- Path elements to dependencies -->
+
+    <path id="compile.nojsp.classpath">
+        <pathelement path="${lib.servlet}"/>
+        <pathelement path="${lib.jdom}"/>
+        <pathelement path="${lib.jaxen}"/>
+        <pathelement path="${lib.dom4j}"/>
+        <pathelement path="${lib.saxpath}"/>
+        <pathelement path="${lib.xalan}"/> <!-- Xalan is not included with Sun JRE 1.5! -->
+        <pathelement path="${lib.jython}"/>
+        <pathelement path="${lib.logkit}"/>
+        <pathelement path="${lib.log4j}"/>
+        <pathelement path="${lib.rhino}"/>
+        <pathelement path="${java.class.path}"/>
+    </path>
+    
+    <path id="compile.classpath">
+        <path refid="compile.nojsp.classpath"/>
+        <pathelement path="${lib.jsp21}"/>
+        <pathelement path="${lib.el}"/>
+    </path>
+
+    <path id="compile.jsp1.classpath">
+        <path refid="compile.nojsp.classpath"/>
+        <pathelement path="${lib.jsp12}"/>
+    </path>
+
+    <path id="compile.jsp2.classpath">
+	<path refid="compile.nojsp.classpath"/>
+	<pathelement path="${lib.jsp20}"/>
+    </path>
+    
+    <path id="compile.classpath.testcases">
+        <pathelement path="${lib.junit}"/>
+        <pathelement path="${lib.jython}"/>
+        <pathelement path="${lib.jdom}"/>
+        <pathelement path="${lib.servlet}"/>
+        <pathelement path="${lib.jsp20}"/>
+    </path>
+
+    <path id="compile.classpath.javadoc">
+        <pathelement path="${lib.xerces}"/>
+        <pathelement path="${lib.jdom}"/>
+        <pathelement path="${lib.dom4j}"/>
+        <pathelement path="${lib.rhino}"/>
+        <pathelement path="${lib.jaxen}"/>
+        <pathelement path="${lib.jython}"/>
+        <pathelement path="${lib.saxpath}"/>
+        <pathelement path="${lib.xalan}"/> <!-- Xalan is not included with Sun JRE 1.5 with the old classname! -->
+        <pathelement path="${lib.servlet}"/>
+        <pathelement path="${lib.jsp21}"/>
+        <pathelement path="${lib.el}"/>
+        <pathelement path="${lib.logkit}"/>
+        <pathelement path="${lib.log4j}"/>
+        <pathelement path="${src.dir}"/>
+        <pathelement path="${build.javacc.dir}"/>
+        <pathelement path="${java.class.path}"/>
+    </path>
+
+    <path id="compile.classpath.examples">
+        <pathelement path="${lib.servlet}"/>
+        <pathelement path="${lib.dir}/freemarker.jar"/>
+        <pathelement path="${lib.struts}"/>
+    </path>
+    
+    <path id="full.classpath">
+        <pathelement path="${src.dir}"/>
+        <pathelement path="${build.classes.dir}" />
+        <pathelement path="${lib.servlet}"/>
+        <pathelement path="${lib.jdom}"/>
+        <pathelement path="${lib.jaxen}"/>
+        <pathelement path="${lib.dom4j}"/>
+        <pathelement path="${lib.saxpath}"/>
+        <pathelement path="${lib.xalan}"/> <!-- Xalan is not included with Sun JRE 1.5! -->
+        <pathelement path="${lib.jython}"/>
+        <pathelement path="${lib.logkit}"/>
+        <pathelement path="${lib.log4j}"/>
+        <pathelement path="${java.class.path}"/>
+    </path>
+    
+    
+    <!-- Pattern set for FreeMarker compilation -->
+    <patternset id="freemarker.compile">
+        <include name="freemarker/cache/**"/>
+        <include name="freemarker/debug/**"/>
+        <include name="freemarker/ext/**"/>
+        <include name="freemarker/log/**"/>
+        <include name="freemarker/core/**" />
+        <include name="freemarker/template/**"/>
+        <exclude name="freemarker/core/RegexBuiltins.java"/>
+        <exclude name="freemarker/ext/ant/**"/>
+        <exclude name="freemarker/ext/beans/EnumModels.java"/>
+        <exclude name="freemarker/ext/dom/XalanXPathSupport.java"/>
+        <exclude name="freemarker/ext/dom/SunInternalXalanXPathSupport.java"/>
+        <exclude name="freemarker/ext/dom/JaxenXPathSupport.java"/>
+        <exclude name="freemarker/ext/jdom/NodeListModel.java"/>
+        <exclude name="freemarker/ext/jython/**"/>
+        <exclude name="freemarker/ext/jsp/TaglibFactory.java"/>
+        <exclude name="freemarker/ext/jsp/TaglibFactory.java"/>
+        <exclude name="freemarker/ext/jsp/FreeMarkerPageContext1.java"/>
+        <exclude name="freemarker/ext/jsp/FreeMarkerPageContext2.java"/>
+        <exclude name="freemarker/ext/jsp/FreeMarkerJspFactory2.java"/>
+        <exclude name="freemarker/ext/rhino/**"/>
+        <exclude name="freemarker/ext/xml/Dom4jNavigator.java"/>
+        <exclude name="freemarker/ext/xml/JdomNavigator.java"/>
+        <exclude name="freemarker/log/AvalonLoggerFactory.java"/>
+        <exclude name="freemarker/log/JDK14LoggerFactory.java"/>
+        <exclude name="freemarker/log/Log4JLoggerFactory.java"/>
+        <exclude name="freemarker/template/utility/JythonRuntime.java"/>
+    </patternset>
+
+    <!-- Pattern set for FreeMarker jar -->
+    <patternset id="freemarker.jar">
+        <include name="freemarker/**"/>
+    </patternset>
+
+    <patternset id="freemarker.compile.logkit">
+        <include name="freemarker/log/AvalonLoggerFactory.java"/>
+    </patternset>
+
+    <patternset id="freemarker.compile.jdk14">
+        <include name="freemarker/log/JDK14LoggerFactory.java"/>
+        <include name="freemarker/core/RegexBuiltins.java"/>
+    </patternset>
+
+    <patternset id="freemarker.compile.jdk15">
+        <include name="freemarker/ext/beans/EnumModels.java"/>
+        <include name="freemarker/ext/dom/SunInternalXalanXPathSupport.java"/>
+    </patternset>
+
+    <patternset id="freemarker.compile.xalan">
+        <include name="freemarker/ext/dom/XalanXPathSupport.java"/>
+    </patternset>
+
+    <patternset id="freemarker.compile.log4j">
+        <include name="freemarker/log/Log4JLoggerFactory.java"/>
+    </patternset>
+
+    <patternset id="freemarker.compile.dom4j">
+        <include name="freemarker/ext/xml/Dom4jNavigator.java"/>
+    </patternset>
+
+    <patternset id="freemarker.compile.jaxen">
+        <include name="freemarker/ext/dom/JaxenXPathSupport.java"/>
+    </patternset>
+
+    <patternset id="freemarker.compile.jdom">
+        <include name="freemarker/ext/jdom/NodeListModel.java"/>
+        <include name="freemarker/ext/xml/JdomNavigator.java"/>
+    </patternset>
+
+    <patternset id="freemarker.compile.jython">
+        <include name="freemarker/ext/ant/**"/>
+        <include name="freemarker/template/utility/JythonRuntime.java"/>
+        <include name="freemarker/ext/jython/**"/>
+    </patternset>
+
+    <patternset id="freemarker.compile.rhino">
+        <include name="freemarker/ext/rhino/**"/>
+    </patternset>
+
+    <patternset id="freemarker.compile.jsp1">
+        <include name="freemarker/ext/jsp/FreeMarkerPageContext1.java"/>
+    </patternset>
+
+    <patternset id="freemarker.compile.jsp2">
+        <include name="freemarker/ext/jsp/FreeMarkerPageContext2.java"/>
+        <include name="freemarker/ext/jsp/FreeMarkerJspFactory2.java"/>
+    </patternset>
+
+    <!-- Pattern set for FreeMarker test case compilation -->
+    <patternset id="freemarker.compile.testcases">
+        <include name="freemarker/testcase/**"/>
+    </patternset>
+
+    <!-- Pattern set for FreeMarker test case test files -->
+    <patternset id="freemarker.testcases">
+        <include name="freemarker/testcase/reference/**"/>
+        <include name="freemarker/testcase/template/**"/>
+        <include name="freemarker/testcase/servlets/reference/**"/>
+        <include name="freemarker/testcase/servlets/template/**"/>
+        <include name="freemarker/testcase/servlets/WEB-INF/**"/>
+        <include name="freemarker/testcase/*.properties"/>
+        <include name="freemarker/testcase/*.xml"/>
+        <include name="freemarker/testcase/models/*.properties"/>
+    </patternset>
+
+    <!-- Pattern set for FreeMarker JavaDoc -->
+    <patternset id="freemarker.javadoc.files">
+        <exclude name="manual/**"/>
+    </patternset>
+
+    <!-- Pattern set for FreeMarker distribution -->
+    <patternset id="freemarker.distribution.src">
+        <include name="build.xml"/>
+        <include name="examples/**"/>
+        <include name="LICENSE.txt"/>
+        <include name="README.txt"/>
+        <include name="src/**"/>
+        <include name="examples/**"/>
+        <exclude name="**/CVS/**"/>
+        <exclude name="**/*.bak"/>
+        <exclude name="**/src/**/*.class" />
+        <exclude name="**/.nbattrs" />
+    </patternset>
+
+    <target name="fetchlibs" unless="all.libs.present" description="fetch build dependencies and put them in lib directory">
+	<mkdir dir="lib"/>
+<!--
+	<echo>Fetching libraries from server.</echo>
+	<get src="${libs.location}/README.txt" dest="lib/README.txt" usetimestamp="true"/>
+	<get src="${libs.location}/ant.jar" dest="lib/ant.jar" usetimestamp="true"/>
+	<get src="${libs.location}/dom4j.jar" dest="lib/dom4j.jar" usetimestamp="true"/>
+	<get src="${libs.location}/emma.jar" dest="lib/emma.jar" usetimestamp="true"/>
+	<get src="${libs.location}/emma_ant.jar" dest="lib/emma_ant.jar" usetimestamp="true"/>
+	<get src="${libs.location}/2.3/javacc.jar" dest="lib/javacc.jar" usetimestamp="true"/>
+	<get src="${libs.location}/jaxen.jar" dest="lib/jaxen.jar" usetimestamp="true"/>
+	<get src="${libs.location}/2.3/jdom.jar" dest="lib/jdom.jar" usetimestamp="true"/>
+	<get src="${libs.location}/js.jar" dest="lib/js.jar" usetimestamp="true"/>
+	<get src="${libs.location}/junit.jar" dest="lib/junit.jar" usetimestamp="true"/>
+	<get src="${libs.location}/jython.jar" dest="lib/jython.jar" usetimestamp="true"/>
+	<get src="${libs.location}/log4j.jar" dest="lib/log4j.jar" usetimestamp="true"/>
+	<get src="${libs.location}/2.3/logkit.jar" dest="lib/logkit.jar" usetimestamp="true"/>
+	<get src="${libs.location}/2.3/rt122.jar" dest="lib/rt122.jar" usetimestamp="true"/>
+	<get src="${libs.location}/saxpath.jar" dest="lib/saxpath.jar" usetimestamp="true"/>
+	<get src="${libs.location}/servlet.jar" dest="lib/servlet.jar" usetimestamp="true"/>
+	<get src="${libs.location}/struts.jar" dest="lib/struts.jar" usetimestamp="true"/>
+	<get src="${libs.location}/jsp-api-1.2.jar" dest="lib/jsp-api-1.2.jar" usetimestamp="true"/>
+	<get src="${libs.location}/jsp-api-2.0.jar" dest="lib/jsp-api-2.0.jar" usetimestamp="true"/>
+	<get src="${libs.location}/jsp-api-2.1.jar" dest="lib/jsp-api-2.1.jar" usetimestamp="true"/>
+	<get src="${libs.location}/xalan.jar" dest="lib/xalan.jar" usetimestamp="true"/>
+!-->
+    </target>
+
+    <target name="init">
+        <condition property="all.libs.present">
+            <and>
+                <available file="lib/README.txt"/>
+                <available file="lib/ant.jar"/>
+                <available file="lib/dom4j.jar"/>
+                <available file="lib/emma.jar"/>
+                <available file="lib/emma_ant.jar"/>
+                <available file="lib/javacc.jar"/>
+                <available file="lib/jaxen.jar"/>
+                <available file="lib/jdom.jar"/>
+                <available file="lib/js.jar"/>
+                <available file="lib/junit.jar"/>
+                <available file="lib/jython.jar"/>
+                <available file="lib/log4j.jar"/>
+                <available file="lib/logkit.jar"/>
+                <available file="lib/rt122.jar"/>
+                <available file="lib/saxpath.jar"/>
+                <available file="lib/servlet.jar"/>
+                <available file="lib/struts.jar"/>
+                <available file="lib/jsp-api-1.2.jar"/>
+                <available file="lib/jsp-api-2.0.jar"/>
+                <available file="lib/jsp-api-2.1.jar"/>
+                <available file="lib/xalan.jar"/>
+            </and>
+        </condition>
+        <antcall target="fetchlibs"/>
+        <available
+            property="log4j.available"
+            classname="org.apache.log4j.Logger"
+            classpathref="compile.classpath"/>
+        <available
+            property="logkit.available"
+            classname="org.apache.log.Logger"
+            classpathref="compile.classpath"/>
+        <available
+            property="jdk14.available"
+            classname="java.util.logging.Logger"
+            classpathref="compile.classpath"/>
+        <available
+            property="jdk15.available"
+            classname="java.lang.Enum"
+            classpathref="compile.classpath"/>
+        <available
+            property="jython.available"
+            classname="org.python.core.PyObject"
+            classpathref="compile.classpath"/>
+        <available
+            property="jsp21.available"
+            classname="javax.el.ELResolver"
+            classpathref="compile.classpath"/>
+        <available
+            property="dom4j.available"
+            classname="org.dom4j.Node"
+            classpathref="compile.classpath"/>
+        <available
+            property="jaxen.available"
+            classname="org.jaxen.XPath"
+            classpathref="compile.classpath"/>
+        <available
+            property="jdom.available"
+            classname="org.jdom.Element"
+            classpathref="compile.classpath"/>
+        <available
+            property="rhino.available"
+            classname="org.mozilla.javascript.Scriptable"
+            classpathref="compile.classpath"/>
+        <available
+            property="xalan.available"
+            classname="org.apache.xpath.XPathAPI"
+            classpathref="compile.classpath" />
+    </target>
+    
+    <!-- The build targets begin here -->
+    <target depends="" name="clean" description="Erase the deployment tree">
+        <delete dir="${build.dir}"/>
+        <delete dir="${lib.dir}"/>
+        <delete dir="docs"/>
+        <delete file="src/freemarker/core/FMParser.java" />
+        <delete file="src/freemarker/core/FMParserConstants.java" />
+        <delete file="src/freemarker/core/FMParserTokenManager.java" />
+        <delete file="src/freemarker/core/SimpleCharStream.java" />
+        <delete file="src/freemarker/core/Token.java" />
+        <delete file="src/freemarker/core/TokenMgrError.java" />
+    </target>
+
+    <target depends="" name="prepare" description="Create the target directories">
+        <mkdir dir="${build.dir}"/>
+        <mkdir dir="${lib.dir}"/>
+    </target>
+
+    <target depends="" name="javadoc" description="Build the JavaDoc documentation" >
+        <mkdir dir="${build.javadoc.dir}"/>
+        <delete includeEmptyDirs="yes">
+            <fileset dir="${build.javadoc.dir}" includes="**/*" />
+        </delete>
+        <javadoc author="true"
+                destdir="${build.javadoc.dir}"
+                doctitle="FreeMarker ${version}"
+                packagenames="freemarker.debug, freemarker.template.*, freemarker.core.*, freemarker.ext.*, freemarker.cache.*, freemarker.log.*"
+                sourcepath="${src.dir}"
+                version="true"
+                windowtitle="FreeMarker ${version} API"
+                classpathref="compile.classpath.javadoc"
+                use="${javadoc.use}">
+        </javadoc>
+    </target>
+
+    <target name="javacc"
+        description="Build the JavaCC parser from its grammar file">
+        <!-- mkdir dir="${build.javacc.dir}/freemarker/core"/ -->
+        <copy todir="${build.javacc.dir}/freemarker/core" file="${src.dir}/freemarker/core/ParseException.java" />
+        <taskdef name="javacc" classname="org.apache.tools.ant.taskdefs.optional.javacc.JavaCC" classpath="lib/javacc.jar"/>
+        <javacc
+            target="${src.dir}/freemarker/core/FMParser.jj"
+            outputdirectory="src/freemarker/core"
+            javacchome="lib"
+        />
+       <replace
+            file="src/freemarker/core/FMParserConstants.java"
+            token="public interface FMParserConstants"
+            value="interface FMParserConstants"
+        />
+        <replace
+            file="src/freemarker/core/FMParserTokenManager.java"
+            token="public class FMParserTokenManager"
+            value="class FMParserTokenManager"
+        />
+  <replace
+      file="src/freemarker/core/Token.java"
+      token="public class Token"
+      value="class Token"
+  />
+  <replace
+      file="src/freemarker/core/SimpleCharStream.java"
+      token="public final class SimpleCharStream"
+      value="final class SimpleCharStream"
+      />
+   <replace
+	file="src/freemarker/core/FMParser.java"
+	token="enum"
+	value="ENUM"
+	/>
+    </target>
+
+    <target depends="init, prepare, javacc" name="compile"
+            description="Compile Java source files">
+        <mkdir dir="${build.classes.dir}"/>
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="lib/rt122.jar" source="1.2" target="1.2">
+            <src path="${src.dir}"/>
+            <patternset refid="freemarker.compile"/>
+            <!-- src path="${build.javacc.dir}"/ -->
+            <classpath refid="compile.classpath"/>
+        </javac>
+        <rmic base="${build.classes.dir}" classpathref="compile.classpath"
+          includes="freemarker/debug/impl/Rmi*Impl.class" verify="yes" stubversion="1.2"/>
+        <antcall target="compile-log4j"/>
+        <antcall target="compile-logkit"/>
+        <antcall target="compile-jdk14"/>
+        <antcall target="compile-jdk15"/>
+<!--        <antcall target="compile-jsp1"/> -->
+        <antcall target="compile-jsp2"/>
+        <antcall target="compile-jython"/>
+        <antcall target="compile-dom4j"/>
+<!--        <antcall target="compile-jdom"/> -->
+        <antcall target="compile-xalan"/>
+        <antcall target="compile-jaxen"/>
+        <antcall target="compile-rhino"/>
+        <copy toDir="${build.classes.dir}">
+          <fileset
+            dir="${src.dir}"
+            excludes="**/CVS/**,**/*.bak,**/*.java,**/*.jj,**/package.html,freemarker/testcase/**"/>
+        </copy>
+    </target>
+
+    <target name="compile-log4j" if="log4j.available">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+            <src path="${src.dir}"/>
+            <classpath refid="compile.classpath"/>
+            <patternset refid="freemarker.compile.log4j"/>
+        </javac>
+    </target>
+
+    <target name="compile-logkit" if="logkit.available">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+            <src path="${src.dir}"/>
+            <classpath refid="compile.classpath"/>
+            <patternset refid="freemarker.compile.logkit"/>
+        </javac>
+    </target>
+
+    <target name="compile-jdk14" if="jdk14.available">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" source="1.4" target="1.4">
+            <src path="${src.dir}"/>
+            <classpath refid="compile.classpath"/>
+            <patternset refid="freemarker.compile.jdk14"/>
+        </javac>
+    </target>
+
+    <target name="compile-jdk15" if="jdk15.available">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" source="1.5" target="1.5">
+            <src path="${src.dir}"/>
+            <classpath refid="compile.classpath"/>
+            <patternset refid="freemarker.compile.jdk15"/>
+        </javac>
+    </target>
+
+    <target name="compile-jython" if="jython.available">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+            <src path="${src.dir}"/>
+            <classpath refid="compile.classpath"/>
+            <patternset refid="freemarker.compile.jython"/>
+        </javac>
+    </target>
+
+    <target name="compile-jsp1">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+            <src path="${src.dir}"/>
+            <classpath refid="compile.jsp1.classpath"/>
+            <patternset refid="freemarker.compile.jsp1"/>
+        </javac>
+    </target>
+
+    <target name="compile-jsp2">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+            <src path="${src.dir}"/>
+            <classpath refid="compile.jsp2.classpath"/>
+            <patternset refid="freemarker.compile.jsp2"/>
+        </javac>
+    </target>
+
+    <target name="compile-rhino" if="rhino.available">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+            <src path="${src.dir}"/>
+            <classpath refid="compile.classpath"/>
+            <patternset refid="freemarker.compile.rhino"/>
+        </javac>
+    </target>
+
+    <target name="compile-dom4j" if="dom4j.available">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+            <src path="${src.dir}"/>
+            <classpath refid="compile.classpath"/>
+            <patternset refid="freemarker.compile.dom4j"/>
+        </javac>
+    </target>
+
+    <target name="compile-jaxen" if="jaxen.available">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+            <src path="${src.dir}"/>
+            <classpath refid="compile.classpath"/>
+            <patternset refid="freemarker.compile.jaxen"/>
+        </javac>
+    </target>
+
+    <target name="compile-jdom" if="jdom.available">
+        <javac deprecation="off" destdir="${build.classes.dir}" debug="on" optimize="off" bootclasspath="${boot.class.path}" target="1.2" source="1.2">
+            <src path="${src.dir}"/>
+            <classpath refid="compile.classpath"/>
+            <patternset refid="freemarker.compile.jdom"/>
+        </javac>
+    </target>
+    
+    <target name="compile-xalan" if="xalan.available">
+        <javac deprecation="off"
+               destdir="${build.classes.dir}"
+               debug="on"
+               optimize="off"
+               target="1.2" source="1.2">
+            <src path="${src.dir}"/>
+            <classpath refid="compile.classpath"/>
+            <patternset refid="freemarker.compile.xalan"/>
+        </javac>
+    </target>
+
+    <target depends="compile" name="jar" description="Create the freemarker.jar">
+        <jar basedir="${build.classes.dir}" jarfile="${lib.dir}/freemarker.jar">
+            <patternset refid="freemarker.jar"/>
+            <manifest>
+                <attribute name="Main-Class" value="freemarker.core.CommandLine" />
+                <attribute name="Extension-name" value="FreeMarker" />
+                <attribute name="Specification-Title" value="FreeMarker" />
+                <attribute name="Specification-Version" value="${versionForMf}" />
+                <attribute name="Specification-Vendor" value="Visigoth Software Society" />
+                <attribute name="Implementation-Title" value="VSS Java FreeMarker" />
+                <attribute name="Implementation-Version" value="${versionForMf}" />
+                <attribute name="Implementation-Vendor" value="Visigoth Software Society" />
+            </manifest>
+       </jar>
+    </target>
+
+    <target depends="compile" name="testcases" description="Build test cases">
+        <mkdir dir="${testcase.dir}"/>
+        <copy toDir="${testcase.dir}">
+            <fileset dir="${build.classes.dir}"/>
+        </copy>
+        <javac deprecation="on" destdir="${testcase.dir}" debug="on" optimize="off">
+            <src path="${src.dir}"/>
+            <classpath refid="compile.classpath.testcases"/>
+            <patternset refid="freemarker.compile.testcases"/>
+        </javac>
+
+        <copy todir="${testcase.dir}">
+            <fileset dir="${src.dir}">
+                <patternset refid="freemarker.testcases"/>
+            </fileset>
+        </copy>
+    </target>
+
+    <target name="test" depends="compile, testcases" description="Run test cases">
+        <junit haltonfailure="off" fork="true">
+            <classpath>
+              <path path="${java.class.path}"/>
+              <path refid="compile.classpath"/>
+              <pathelement path="${lib.junit}"/>
+              <pathelement path="${lib.jdom}"/>
+              <pathelement path="${build.classes.dir}"/>
+              <pathelement path="${testcase.dir}"/>
+            </classpath>
+            <formatter type="plain"/>
+            <formatter type="xml"/>
+
+            <test
+              name="freemarker.testcase.TemplateTestSuite"
+              todir="${testcase.dir}"/>
+        </junit>
+    </target>
+
+    <!--
+      Reusable task for building example webapps. Invoke with antcall task.
+      Params:
+      - webapp: The directory of the webapp relative to the example directory
+    -->
+    <target name="example-general-webapp" depends="init"
+            description="Reusable task for building example webapps. For internal usage only.">
+        <mkdir dir="${build.examples.dir}/${webapp}"/>
+        <copy toDir="${build.examples.dir}/${webapp}">
+          <fileset dir="${examples.dir}/${webapp}" excludes="**/CVS/**,**/*.bak"/>
+        </copy>
+        <javac deprecation="on" destdir="${build.examples.dir}/${webapp}/WEB-INF/classes">
+            <src path="${examples.dir}/${webapp}/WEB-INF/classes"/>
+            <classpath refid="compile.classpath.examples" />
+        </javac>
+        <mkdir dir="${build.examples.dir}/${webapp}/WEB-INF/lib"/>
+        <copy file="lib/freemarker.jar" toDir="${build.examples.dir}/${webapp}/WEB-INF/lib"/>
+    </target>
+
+    <target name="example-webapp1" depends="init" description="Build the example webapps">
+        <antcall target="example-general-webapp">
+          <param name="webapp" value="webapp1"/>
+        </antcall>
+    </target>
+
+    <target name="example-webapp2" depends="init" description="Build the example webapps">
+        <antcall target="example-general-webapp">
+          <param name="webapp" value="webapp2"/>
+        </antcall>
+    </target>
+
+    <target name="example-jsp-webapp" depends="init" description="Build the JSP example webapp">
+        <antcall target="example-general-webapp">
+          <param name="webapp" value="jsp-webapp"/>
+        </antcall>
+    </target>
+
+    <target name="example-struts-webapp" depends="init" description="Build the struts example webapp">
+        <antcall target="example-general-webapp">
+          <param name="webapp" value="struts-webapp"/>
+        </antcall>
+    </target>
+
+    <target name="prepare-jython-webapp">
+        <property name="twit.jar.loc" location="${build.jython-webapp.dir}/WEB-INF/lib/twit.jar"/>
+        <uptodate
+            property="jython-webapp.upToDate"
+          targetfile="${twit.jar.loc}"
+      >
+          <srcfiles dir="examples/jython-webapp/WEB-INF" includes="UpperClassTwitOfTheYearServlet.py"/>
+          <srcfiles dir="${src.dir}" includes="freemarker/ext/servlet/FreemarkerServlet.java"/>
+      </uptodate>
+
+        <mkdir dir="${build.jython-webapp.dir}/WEB-INF/lib"/>
+          <copy toDir="${build.jython-webapp.dir}">
+          <fileset dir="${examples.dir}/jython-webapp" excludes="**/CVS/**,**/*.bak"/>
+        </copy>
+
+        <property name="jythonc" location="${jython.home}/Tools/jythonc/jythonc.py"/>
+        <property name="freemarker.jar.loc" location="lib/freemarker.jar"/>
+        <copy file="lib/freemarker.jar" toDir="${build.jython-webapp.dir}/WEB-INF/lib"/>
+    </target>
+
+    <target name="example-jython-webapp" depends="init, prepare-jython-webapp" if="jython.available" unless="jython-webapp.upToDate"
+            description="Build the Jython Webapp example code">
+        <java fork="true" classname="org.python.util.jython" dir="${build.jython-webapp.dir}/WEB-INF">
+            <classpath>
+              <path  refid="compile.classpath"/>
+              <pathelement location="${freemarker.jar.loc}"/>
+            </classpath>
+            <sysproperty key="python.home" value="${jython.home}"/>
+            <sysproperty key="python.home" value="${jython.home}"/>
+            <arg value="${jythonc}"/>
+            <arg value="--core"/>
+            <arg value="--bean"/>
+            <arg value="${twit.jar.loc}"/>
+            <arg value="UpperClassTwitOfTheYearServlet.py"/>
+        </java>
+
+        <delete dir="${build.jython-webapp.dir}/WEB-INF/jpywork"/>
+        
+    </target>
+
+    <target name="examples"
+        depends="example-webapp1, example-webapp2, example-struts-webapp, example-jsp-webapp, example-jython-webapp"/>
+    
+    <target name="fail.logkit" unless="logkit.available">
+      <fail message="Can't build dist because LogKit classes are not available."/>
+    </target>
+
+    <target name="fail.log4j" unless="log4j.available">
+      <fail message="Can't build dist because Log4J classes are not available."/>
+    </target>
+
+    <target name="fail.jdk14" unless="jdk14.available">
+      <fail message="Can't build dist because JDK 1.4 classes are not available."/>
+    </target>
+
+    <target name="fail.jdk15" unless="jdk15.available">
+      <fail message="Can't build dist because JDK 1.5 classes are not available."/>
+    </target>
+
+   <target name="fail.jython" unless="jython.available">
+      <fail message="Can't build dist because Jython classes are not available."/>
+    </target>
+
+    <target name="fail.jsp21" unless="jsp21.available">
+      <fail message="Can't build dist because JSP 2.1 classes are not available."/>
+    </target>
+
+    <target name="fail.rhino" unless="rhino.available">
+      <fail message="Can't build dist because Rhino classes are not available."/>
+    </target>
+
+    <target name="fail.jaxen" unless="jaxen.available">
+      <fail message="Can't build dist because Jaxen classes are not available."/>
+    </target>
+
+    <target name="fail.xalan" unless="xalan.available">
+      <fail message="Can't build dist because Xalan classes are not available."/>
+    </target>
+
+    <target
+        name="dist"
+        depends="init, fail.logkit, fail.log4j, fail.jdk14, fail.jdk15, fail.jython, fail.jsp21, fail.rhino, fail.jaxen, fail.xalan, jar"
+        description="Build the FreeMarker distribution files">
+        <delete dir="${dist.dir}" />
+        <mkdir dir="${dist.dir}" />
+        <mkdir dir="${dist.dir.versioned}" />
+        <copy todir="${dist.dir.versioned}" includeEmptyDirs="no">
+            <fileset dir=".">
+                <patternset refid="freemarker.distribution.src"/>
+            </fileset>
+        </copy>
+        <replace
+            file="${dist.dir.versioned}/README.txt"
+            token="{version}"
+            value="${version}"
+        />
+
+        <copy todir="${dist.dir.versioned}/lib"  includeEmptyDirs="no">
+          <fileset file="lib/freemarker.jar" />
+        </copy>
+
+        <!-- Generate website pages and copy them to distro -->
+        <ant dir="${repositoryRootDir}site" target="all">
+          <property name="site.offline" value="yes"/>
+        </ant>
+        <copy todir="${dist.dir.versioned}/docs">
+          <fileset dir="${repositoryRootDir}site/build/site"/>
+        </copy>
+        
+        <!-- Generate manual pages and copy them to distro -->
+        <ant dir="../docgen" target="all">
+          <property name="docgen.offline" value="yes"/>
+        </ant>
+        <copy todir="${dist.dir.versioned}/docs/docs" includeEmptyDirs="no">
+          <fileset dir="../docgen/build/docs"/>
+        </copy>
+
+        <antcall target="packdist"/>
+    </target>
+    
+    <target name="packdist">
+        <delete file="${freemarker.tar}" />
+        <tar tarfile="${freemarker.tar}" basedir="${dist.dir}" />
+        <delete file="${freemarker.gzip}" />
+        <gzip zipfile="${freemarker.gzip}" src="${freemarker.tar}" />
+        <delete file="${freemarker.tar}" />
+    </target>
+    
+    <target name="packdocs">
+        <delete file="build/docs.tar" />
+        <tar tarfile="build/docs.tar" basedir="${dist.dir.versioned}/docs" />
+        <delete file="build/docs.tar.gz" />
+        <gzip zipfile="build/docs.tar.gz" src="build/docs.tar" />
+        <delete file="build/docs.tar" />
+    </target>
+
+    <target name="packapidocs">
+        <delete file="build/apidocs.tar" />
+        <tar tarfile="build/apidocs.tar" basedir="build/api" />
+        <delete file="build/apidocs.tar.gz" />
+        <gzip zipfile="build/apidocs.tar.gz" src="build/apidocs.tar" />
+        <delete file="build/apidocs.tar" />
+    </target>
+
+<!-- The following ant target builds a war file for the HelloServlet
+and guestbook examples. Once you build the .war file and drop it in
+the appropriate directory, you should be able to see the following
+URL's: http://localhost:8080/fmexamples/servlet/hello
+and: http://localhost:8080/fmexamples/servlet/guestbook -->
+
+    <target name="war-jython-webapp"
+             depends="example-jython-webapp" if="jython.available">
+        <jar jarfile="fm-jython-example.war" basedir="${build.jython-webapp.dir}" />
+    </target>
+
+    <target depends="clean,
+                    prepare,
+                    javadoc,
+                    jar,
+                    example-webapp1, example-webapp2,
+                    testcases"
+
+            name="all"
+            description="Build everything" />
+
+</project>