<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
  
    http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->

<project basedir="." default="jar" name="freemarker"
  xmlns:ivy="antlib:org.apache.ivy.ant"
  xmlns:javacc="http://javacc.dev.java.net/"
  xmlns:docgen="http://freemarker.org/docgen"
  xmlns:bnd="http://www.aqute.biz/bnd"
  xmlns:rat="antlib:org.apache.rat.anttasks"
  xmlns:u="http://freemarker.org/util"
>

  <!-- ================================================================== -->
  <!-- Properties                                                         -->
  <!-- ================================================================== -->

  <!-- Ivy project coordinates: -->
  <property name="moduleOrg" value="org.freemarker" />
  <property name="moduleName" value="freemarker" />
  <property name="moduleBranch" value="2.3" />

  <!-- Will be overidden on the Continous Integration server: -->
  <property name="server.ivy.repo.root" value="${basedir}/build/dummy-server-ivy-repo" />
  
  <property file="build.properties"/>
  <condition property="has.explicit.boot.classpath.j2se1.5">
    <isset property="boot.classpath.j2se1.5"/>
  </condition>
  <condition property="has.explicit.boot.classpath.j2se1.6">
    <isset property="boot.classpath.j2se1.6"/>
  </condition>
  <condition property="has.all.explicit.boot.classpaths">
    <and>
      <isset property="has.explicit.boot.classpath.j2se1.5"/>
      <isset property="has.explicit.boot.classpath.j2se1.6"/>
    </and>
  </condition>
  <available property="atLeastJDK8" classname="java.util.function.Predicate"/>

  <!-- When boot.classpath.j2se* is missing, these will be the defaults: -->
  <!-- Note: Target "dist" doesn't allow using these. -->
  <property name="boot.classpath.j2se1.5" value="${sun.boot.class.path}" />
  <property name="boot.classpath.j2se1.6" value="${sun.boot.class.path}" />
  
  <!-- For checking the correctness of the boot.classpath.j2se* -->
  <available classpath="${boot.classpath.j2se1.5}"
    classname="java.util.concurrent.ConcurrentHashMap" ignoresystemclasses="true" 
    property="boot.classpath.j2se1.5.correct"
  />
  <available classpath="${boot.classpath.j2se1.6}"
    classname="java.util.ServiceLoader" ignoresystemclasses="true" 
    property="boot.classpath.j2se1.6.correct"
  />
  
  <condition property="example.freemarker.jar.location"
    value="freemarker.jar" else="build/freemarker.jar">
    <and>
      <available  file="freemarker.jar" />
      <not>
        <available  file="build/freemarker.jar" />
      </not>
    </and>
  </condition>
  
  <available file="lib/struts" property="struts.available" />
  
  <!-- Set up version/timestamp filters and the version property: -->
  <tstamp>
    <format property="timestampNice" pattern="yyyy-MM-dd'T'HH:mm:ss'Z'"
        timezone="UTC" />
    <format property="timestampInVersion" pattern="yyyyMMdd'T'HHmmss'Z'"
        timezone="UTC" />
  </tstamp>
  <filter token="timestampInVersion" value="${timestampInVersion}" />
  <filter token="timestampNice" value="${timestampNice}" />
  <mkdir dir="build"/>
  <!-- Copying is needed to substitute the timestamps. -->
  <copy
      file="src/main/resources/freemarker/version.properties"
      tofile="build/version.properties.tmp"
      filtering="true"
      overwrite="true"
  />
  <property file="build/version.properties.tmp" />
  <delete file="build/version.properties.tmp" />
  <filter token="version" value="${version}" />
  
  <property name="dist.dir" value="build/dist/freemarker-${version}" />
  
  
  <!-- ================================================================== -->
  <!-- Initialization                                                     -->
  <!-- ================================================================== -->

  
  <target name="clean" description="get rid of all generated files">
    <delete dir="build" />
  </target>

  <target name="clean-classes" description="get rid of compiled classes">
    <delete dir="build/classes" />
    <delete dir="build/test-classes" />
    <delete dir="build/coverage/classes" />
  </target>

  <condition property="deps.available">
    <available file=".ivy" />
  </condition>
  
  <target name="init" depends="_autoget-deps"
    description="Fetch dependencies if any are missing and create the build directory if necessary"
  >
    <mkdir dir="build"/>
  </target>

  
  <!-- ================================================================= -->
  <!-- Compilation                                                       -->
  <!-- ================================================================= -->

  
  <target name="javacc" depends="init" unless="parser.uptodate"
    description="Build the parser from its grammar file"
  >
    <ivy:cachepath conf="parser" pathid="ivy.dep" />
    <taskdef name="generate" classname="org.apache.tools.ant.taskdefs.optional.javacc.JavaCC"
      uri="http://javacc.dev.java.net/"
      classpathref="ivy.dep"
    />
    
    <property name="_javaccOutputDir"
      value="build/generated-sources/java/freemarker/core/"
    />

    <mkdir dir="${_javaccOutputDir}" />
    <ivy:retrieve conf="parser" pattern="build/javacc-home.tmp/[artifact].[ext]" />
    <javacc:generate
      target="src/main/javacc/FTL.jj"
      outputdirectory="${_javaccOutputDir}"
      javacchome="build/javacc-home.tmp"
    />
    <delete dir="build/javacc-home.tmp" />
    
    <replace
      file="${_javaccOutputDir}/FMParser.java"
      token="private final LookaheadSuccess"
      value="private static final LookaheadSuccess"
    />
    <replace
      file="${_javaccOutputDir}/FMParserConstants.java"
      token="public interface FMParserConstants"
      value="interface FMParserConstants"
    />
    <replace
      file="${_javaccOutputDir}/FMParserTokenManager.java"
      token="public class FMParserTokenManager"
      value="class FMParserTokenManager"
    />
    <replace
      file="${_javaccOutputDir}/Token.java"
      token="public class Token"
      value="class Token"
    />
    <replace
      file="${_javaccOutputDir}/SimpleCharStream.java"
      token="public final class SimpleCharStream"
      value="final class SimpleCharStream"
    />
    <replace
      file="${_javaccOutputDir}/FMParser.java"
      token="enum"
      value="ENUM"
    />
    
    <!-- As we have a modified version in src/main/java: -->
    <move 
      file="${_javaccOutputDir}/ParseException.java"
      tofile="${_javaccOutputDir}/ParseException.java.ignore"
    />
    <move 
      file="${_javaccOutputDir}/TokenMgrError.java"
      tofile="${_javaccOutputDir}/TokenMgrError.java.ignore"
    />
  </target>
   
  <target name="compile" depends="javacc">
    <fail unless="boot.classpath.j2se1.5.correct"><!--
      -->The "boot.classpath.j2se1.5" property value (${boot.classpath.j2se1.5}) <!--
      -->seems to be an incorrect boot classpath. Please fix it in <!--
      -->the &lt;projectDir>/build.properties file, or wherever you <!--
      -->set it.<!--
    --></fail>
    <fail unless="boot.classpath.j2se1.6.correct"><!--
      -->The "boot.classpath.j2se1.6" property value (${boot.classpath.j2se1.6}) <!--
      -->seems to be an incorrect boot classpath. Please fix it in <!--
      -->the &lt;projectDir>/build.properties file, or wherever you <!--
      -->set it.<!--
    --></fail>
    <echo level="info"><!--
      -->Using boot classpaths:<!--
      -->Java 5: ${boot.classpath.j2se1.5}; <!--
      -->Java 6: ${boot.classpath.j2se1.6}<!--
    --></echo>

    <mkdir dir="build/classes" />
    
    <!-- Note: the "build.base" conf doesn't include optional FreeMarker dependencies. -->
    <ivy:cachepath conf="build.base" pathid="ivy.dep" />
    <javac destdir="build/classes" deprecation="off" 
      debug="on" optimize="off" target="1.5" source="1.5" encoding="utf-8"
      includeantruntime="false"
      classpathref="ivy.dep"
      bootclasspath="${boot.classpath.j2se1.5}"
      excludes="
        freemarker/core/_Java6Impl.java,
        freemarker/ext/jsp/**,
        freemarker/ext/servlet/**,
        freemarker/cache/WebappTemplateLoader.java,
        
        freemarker/ext/jython/**,
        freemarker/template/utility/JythonRuntime.java,
        freemarker/ext/ant/**"
    >
      <src>
        <pathelement location="src/main/java" />
        <pathelement location="build/generated-sources" />
      </src>
    </javac>

    <ivy:cachepath conf="build.base" pathid="ivy.dep" />
    <javac srcdir="src/main/java" destdir="build/classes" deprecation="off" 
      debug="on" optimize="off" target="1.5" source="1.5" encoding="utf-8"
      includeantruntime="false"
      classpathref="ivy.dep"
      bootclasspath="${boot.classpath.j2se1.6}"
      includes="freemarker/core/_Java6Impl.java"
    />
    
    <rmic
      base="build/classes" includes="freemarker/debug/impl/Rmi*Impl.class"
      classpathref="ivy.dep"
      verify="yes" stubversion="1.2"
    />

    <ivy:cachepath conf="build.jsp2.0" pathid="ivy.dep.jsp2.0" />
    <javac srcdir="src/main/java" destdir="build/classes" deprecation="off" 
      debug="on" optimize="off" target="1.5" source="1.5" encoding="utf-8"
      includeantruntime="false"
      classpathref="ivy.dep.jsp2.0"
      bootclasspath="${boot.classpath.j2se1.5}"
      includes="
        freemarker/ext/jsp/**,
        freemarker/ext/servlet/**,
        freemarker/cache/WebappTemplateLoader.java"
      excludes="
        freemarker/ext/jsp/_FreeMarkerPageContext21.java,
        freemarker/ext/jsp/FreeMarkerJspFactory21.java,
        freemarker/ext/jsp/FreeMarkerJspApplicationContext.java"
    />
    
    <!-- There's no build.jsp2.0, as those classes are part of the common build subset. -->
    
    <ivy:cachepath conf="build.jsp2.1" pathid="ivy.dep.jsp2.1" />
    <javac srcdir="src/main/java" destdir="build/classes" deprecation="off" 
      debug="on" optimize="off" target="1.5" source="1.5" encoding="utf-8"
      includeantruntime="false"
      classpathref="ivy.dep.jsp2.1"
      bootclasspath="${boot.classpath.j2se1.5}"
      includes="
        freemarker/ext/jsp/_FreeMarkerPageContext21.java,
        freemarker/ext/jsp/FreeMarkerJspFactory21.java,
        freemarker/ext/jsp/FreeMarkerJspApplicationContext.java"
    />

    <ivy:cachepath conf="build.jython2.0" pathid="ivy.dep.jython2.0" />
    <javac srcdir="src/main/java" destdir="build/classes" deprecation="off" 
      debug="on" optimize="off" target="1.5" source="1.5" encoding="utf-8"
      includeantruntime="false"
      classpathref="ivy.dep.jython2.0"
      bootclasspath="${boot.classpath.j2se1.5}"
      includes="
        freemarker/ext/ant/**,
        freemarker/template/utility/JythonRuntime.java,
        freemarker/ext/jython/**"
      excludes="
        freemarker/ext/jython/_Jython22VersionAdapter.java,
        freemarker/ext/jython/_Jython25VersionAdapter.java"
    />
    
    <ivy:cachepath conf="build.jython2.2" pathid="ivy.dep.jython2.2" />
    <javac srcdir="src/main/java" destdir="build/classes" deprecation="off" 
      debug="on" optimize="off" target="1.5" source="1.5" encoding="utf-8"
      includeantruntime="false"
      classpathref="ivy.dep.jython2.2"
      bootclasspath="${boot.classpath.j2se1.5}"
      includes="
        freemarker/ext/jython/_Jython22VersionAdapter.java"
    />
    
    <ivy:cachepath conf="build.jython2.5" pathid="ivy.dep.jython2.5" />
    <javac srcdir="src/main/java" destdir="build/classes" deprecation="off" 
      debug="on" optimize="off" target="1.5" source="1.5" encoding="utf-8"
      includeantruntime="false"
      classpathref="ivy.dep.jython2.5"
      bootclasspath="${boot.classpath.j2se1.5}"
      includes="
        freemarker/ext/jython/_Jython25VersionAdapter.java"
    />
    
    <rmic base="build/classes" classpathref="ivy.dep"
      includes="src/main/java/freemarker/debug/impl/Rmi*Impl.class"
      verify="yes" stubversion="1.2"
    />
    
    <!-- We don't have this file in 2.4.X... yet?
    <copy
      file="build/classes/freemarker/core/SecureRendererImpl.class"
      tofile="build/classes/freemarker/core/SecureRendererImpl.clazz"
    />
    -->
    
    <copy toDir="build/classes">
      <fileset dir="src/main/resources"
        excludes="
          freemarker/version.properties"
      />
    </copy>
    <copy toDir="build/classes" filtering="true" overwrite="true">
      <fileset dir="src/main/resources"
        includes="
          freemarker/version.properties"
      />
    </copy>
    <copy toDir="build/classes/META-INF">
      <fileset dir="."
        includes="
          LICENSE.txt,
          NOTICE.txt"
      />
    </copy>
  </target>

  <target name="compileTest" depends="compile">
    <mkdir dir="build/test-classes" />
  
    <ivy:cachepath conf="build.test" pathid="ivy.dep.build.test" />
    <javac srcdir="src/test/java" destdir="build/test-classes" deprecation="off" 
      debug="on" optimize="off" target="1.5" source="1.5" encoding="utf-8"
      includeantruntime="false"
      classpath="build/classes"
      classpathref="ivy.dep.build.test"
      bootclasspath="${boot.classpath.j2se1.6}"
    />
    <copy toDir="build/test-classes">
      <fileset dir="src/test/resources"
        excludes=""
      />
    </copy>
  </target>
   
   <target name="jar" depends="compile">
    <ivy:cachepath pathid="ivy.dep" conf="bnd" />
    <taskdef resource="aQute/bnd/ant/taskdef.properties"
      uri="http://www.aqute.biz/bnd"
      classpathref="ivy.dep"
    />
  
    <!-- Hack: This file should be excluded, but I can't explain that to bnd. -->
    <!-- We don't have this file in 2.4.X... yet?
    <move
        file="build/classes/freemarker/core/SecureRendererImpl.class"
        tofile="build/SecureRendererImpl.class.tmp"
        preservelastmodified="true" overwrite="true"
    />
    -->
    <bnd:bnd
        files="osgi.bnd" eclipse="false"
        output="build/freemarker.jar"
    />
    <!-- Revert previous hack... -->
    <!-- We don't have this file in 2.4.X... yet?
    <move
        file="build/SecureRendererImpl.class.tmp"
        tofile="build/classes/freemarker/core/SecureRendererImpl.class"
        preservelastmodified="true" overwrite="true"
    />
    -->
  </target>

  <!-- ================================================================= -->
  <!-- Testing                                                           -->
  <!-- ================================================================= -->

  <target name="test" depends="compileTest" description="Run test cases">
    <mkdir dir="build/junit-reports" />
    <ivy:cachepath conf="run.test" pathid="ivy.dep.run.test" />
    <junit haltonfailure="on" fork="true" forkmode="once">
      <classpath>
        <pathelement path="build/test-classes" />
        <pathelement path="build/classes" />
        <path refid="ivy.dep.run.test" />
      </classpath>
      <formatter type="plain" />
      <formatter type="xml" />
      <batchtest todir="build/junit-reports">
        <fileset dir="src/test/java">
          <include name="**/*Test.java" />
          <include name="**/*TestSuite.java" />
          <exclude name="**/Abstract*.java" />
        </fileset>
      </batchtest>
    </junit>
  </target>
  
  <!-- ================================================================= -->
  <!-- Generate docs                                                     -->
  <!-- ================================================================= -->

  <target depends="javacc" name="_rawJavadoc">
    <!-- depends="javacc" is needed as its output is referred in the docs. -->
    <mkdir dir="build/api" />
    <delete includeEmptyDirs="yes">
      <fileset dir="build/api" includes="**/*" />
    </delete>
    <!-- javadoc with <fileset> has bugs, so we create a filtered copy: -->
    <copy todir="build/javadoc-sources">
      <fileset dir="src/main/java">
        <exclude name="**/_*.java" />
        <exclude name="**/SunInternalXalanXPathSupport.java" />
        <!-- Remove classes that are, I suppose, only accidentally public: -->
        <exclude name="**/core/LocalContext.java" />
        <exclude name="**/core/CollectionAndSequence.java" />
        <exclude name="**/core/Comment.java" />
        <exclude name="**/core/DebugBreak.java" />
        <exclude name="**/core/Expression.java" />
        <exclude name="**/core/LibraryLoad.java" />
        <exclude name="**/core/Macro.java" />
        <exclude name="**/core/ReturnInstruction.java" />
        <exclude name="**/core/StringArraySequence.java" />
        <exclude name="**/core/TemplateElement.java" />
        <exclude name="**/core/TemplateObject.java" />
        <exclude name="**/core/TextBlock.java" />
        <exclude name="**/core/ReturnInstruction.java" />
        <exclude name="**/core/TokenMgrError.java" />
        <exclude name="**/template/EmptyMap.java" />
        <exclude name="**/log/SLF4JLoggerFactory.java" />
        <exclude name="**/log/CommonsLoggingLoggerFactory.java" />
      </fileset>
    </copy>
    
    <!-- conf="IDE": as that has to contain all depedencies -->
    <ivy:cachepath conf="IDE" pathid="ivy.dep" />
    <javadoc
      sourcepath="build/javadoc-sources"
      destdir="build/api"
      doctitle="FreeMarker ${version}"
      packagenames="
        freemarker.debug, freemarker.template.*,
        freemarker.core.*, freemarker.ext.*,
        freemarker.cache.*, freemarker.log.*"
      use="true"
      version="true"
      author="true"
      windowtitle="FreeMarker ${version} API"
      classpath="build/classes"
      classpathref="ivy.dep"
      failonerror="true"
      charset="UTF-8"
      docencoding="UTF-8"
      locale="en_US"
    >
      <link href="http://docs.oracle.com/javase/8/docs/api/"/>
    </javadoc>
    <delete dir="build/javadoc-sources" />
  </target>

  <target name="javadoc" depends="_rawJavadoc, _fixJDK8JavadocCSS" description="Build the JavaDocs" />
  
  <target name="_fixJDK8JavadocCSS" depends="_rawJavadoc" if="atLeastJDK8">
    <property name="file" value="build/api/stylesheet.css" />
        
    <available file="${file}" property="stylesheet.available"/>
    <fail unless="stylesheet.available">CSS file not found: ${file}</fail>
    <echo>Fixing JDK 8 CSS in ${file}</echo>
    
    <!-- Tell that it's modified: -->
    <replaceregexp
        file="${file}" flags="gs" encoding="utf-8"
        match="/\* (Javadoc style sheet) \*/" replace="/\* \1 - JDK 8 usability fix regexp substitutions applied \*/"
    />

    <!-- Remove broken link: -->
    <replaceregexp
        file="${file}" flags="gs" encoding="utf-8"
        match="@import url\('resources/fonts/dejavu.css'\);\s*" replace=""
    />
    
    <!-- Font family fixes: -->
    <replaceregexp
        file="${file}" flags="gsi" encoding="utf-8"
        match="['&quot;]DejaVu Sans['&quot;]" replace="Arial"
    />
    <replaceregexp
        file="${file}" flags="gsi" encoding="utf-8"
        match="['&quot;]DejaVu Sans Mono['&quot;]" replace="'Courier New'"
    />
    <replaceregexp
        file="${file}" flags="gsi" encoding="utf-8"
        match="['&quot;]DejaVu Serif['&quot;]" replace="Arial"
    />
    <replaceregexp
        file="${file}" flags="gsi" encoding="utf-8"
        match="(?&lt;=[\s,:])serif\b" replace="sans-serif"
    />
    <replaceregexp
        file="${file}" flags="gsi" encoding="utf-8"
        match="(?&lt;=[\s,:])Georgia,\s*" replace=""
    />
    <replaceregexp
        file="${file}" flags="gsi" encoding="utf-8"
        match="['&quot;]Times New Roman['&quot;],\s*" replace=""
    />
    <replaceregexp
        file="${file}" flags="gsi" encoding="utf-8"
        match="(?&lt;=[\s,:])Times,\s*" replace=""
    />
    <replaceregexp
        file="${file}" flags="gsi" encoding="utf-8"
        match="(?&lt;=[\s,:])Arial\s*,\s*Arial\b" replace="Arial"
    />
    
    <!-- "Parameters:", "Returns:", "Throws:", "Since:", "See also:" etc. fixes: -->
    <property name="ddSelectorStart" value="(?:\.contentContainer\s+\.(?:details|description)|\.serializedFormContainer)\s+dl\s+dd\b.*?\{[^\}]*\b" />
    <property name="ddPropertyEnd" value="\b.+?;" />
    <!-- - Put back description (dd) indentation: -->
    <replaceregexp
        file="${file}" flags="gs" encoding="utf-8"
        match="(${ddSelectorStart})margin${ddPropertyEnd}" replace="\1margin: 5px 0 10px 20px;"
    />
    <!-- - No monospace font for the description (dd) part: -->
    <replaceregexp
        file="${file}" flags="gs" encoding="utf-8"
        match="(${ddSelectorStart})font-family${ddPropertyEnd}" replace="\1"
    />
  </target>
  
  <!-- ====================== -->
  <!-- Manual                 -->
  <!-- ====================== -->
  
  <macrodef name="manual" uri="http://freemarker.org/util">
    <attribute name="offline" />
    <attribute name="locale" />
    <sequential>
      <ivy:cachepath conf="manual" pathid="ivy.dep" />
      <taskdef resource="org/freemarker/docgen/antlib.properties"
        uri="http://freemarker.org/docgen"
        classpathref="ivy.dep"
      />
      
      <docgen:transform
        srcdir="src/manual/@{locale}" destdir="build/manual/@{locale}"
        offline="@{offline}"
      />
    </sequential>
  </macrodef>
  
  <target name="manualOffline" depends="init" description="Build the Manual for offline use" >
    <u:manual offline="true" locale="en_US" />
  </target>

  <target name="manualFreemarkerOrg" depends="init" description="Build the Manual to be upload to freemarker.org" >
    <u:manual offline="false" locale="en_US" />
  </target>
  
  <target name="manualOffline_zh_CN" depends="init" description="Build the Manual for offline use" >
    <u:manual offline="true" locale="zh_CN" />
  </target>

  <target name="manualFreemarkerOrg_zh_CN" depends="init" description="Build the Manual to be upload to freemarker.org" >
    <u:manual offline="false" locale="zh_CN" />
  </target>
  
  <!-- ====================== -->
  <!-- Examples               -->
  <!-- ====================== -->

  <macrodef name="buildExampleWebapp" uri="http://freemarker.org/util">
    <attribute name="exampleName" />
    <sequential>
      <mkdir dir="build/examples/@{exampleName}/WEB-INF/classes" />
      <ivy:cachepath conf="example.@{exampleName}" pathid="ivy.dep" />
      <javac
        srcdir="src/examples/@{exampleName}/WEB-INF/classes"
        destdir="build/examples/@{exampleName}/WEB-INF/classes"
        deprecation="off" debug="on" optimize="off" target="1.5" source="1.5"
        encoding="utf-8"
        includeantruntime="false"
        classpathref="ivy.dep"
        bootclasspath="${boot.classpath.j2se1.5}"
      >
        <classpath>
          <pathelement path="${ivy.dep}" />
          <pathelement location="${example.freemarker.jar.location}" />
          <fileset dir="lib/struts" erroronmissingdir="false">
            <include name="*.jar" />
          </fileset>
        </classpath>
      </javac>
      <copy toDir="build/examples/@{exampleName}">
        <fileset dir="src/examples/@{exampleName}" excludes="**/*.java" />
      </copy>
      <copy file="${example.freemarker.jar.location}"
        todir="build/examples/@{exampleName}/WEB-INF/lib" />
      <echo message="*** Example built: build/examples/@{exampleName} ***" />
    </sequential>
  </macrodef>
  
  <target name="example-webapp1" depends="jar" description="Build example webapp 1">
    <u:buildExampleWebapp examplename="webapp1" />
  </target>

  <target name="example-webapp2" depends="jar" description="Build example webapp 2">
    <u:buildExampleWebapp examplename="webapp2" />
  </target>

  <target name="example-struts-webapp" depends="jar" description="Build example Struts 1 webapp">
    <fail unless="struts.available"><!--
      -->You have to copy the Struts 1.1 jar-s to <!--
      -->&lt;freemarker_project>/lib/struts to build this example!<!--
    --></fail>
    <copy todir="build/examples/struts-webapp/WEB-INF/lib">
      <fileset dir="lib/struts" />
    </copy>
    <u:buildExampleWebapp examplename="struts-webapp" />
  </target>
  
  <target name="example-ant" depends="jar" description="Build Ant example">
    <mkdir dir="build/examples/ant" />
    <copy toDir="build/examples/ant">
      <fileset dir="src/examples/ant" />
    </copy>
    <copy file="${example.freemarker.jar.location}"
      todir="build/examples/ant/lib" />
    <echo message="*** Example built: build/examples/ant ***" />
  </target>

  <!-- ====================== -->
  <!-- Distributuion building -->
  <!-- ====================== -->

  <target name="dist"
    description="Build the FreeMarker distribution files"
  >
    <fail
      unless="has.all.explicit.boot.classpaths"
      message="All boot.classpath properties must be set in build.properties for dist!"
    />
    <fail unless="atLeastJDK8" message="The release should be built with JDK 8+ (you may need to set JAVA_HOME)" />
    <antcall target="clean" />  <!-- To improve the reliability -->
    <antcall target="_dist" />
  </target>

  <target name="_dist"
    depends="jar, javadoc, manualOffline"
  >
    <!-- Copy jars and sources and such into the distro -->
    <delete dir="${dist.dir}" />
    <mkdir dir="${dist.dir}" />
    
    <!-- Copy txt-s -->
    <copy todir="${dist.dir}" includeEmptyDirs="no">
      <fileset dir="." defaultexcludes="no">
        <include name="*.txt" />
        <!-- Because of the documentation fonts, the distribution has an extended version of these: -->
        <exclude name="LICENSE.txt" />
        <exclude name="NOTICE.txt" />
      </fileset>
    </copy>
    <replace
      file="${dist.dir}/README.txt"
      token="{version}"
      value="${version}"
    />

    <!-- Copy binary -->
    <copy file="build/freemarker.jar" tofile="${dist.dir}/freemarker.jar" />

    <!-- Copy documentation -->
    <mkdir dir="${dist.dir}/documentation" />
    <copy todir="${dist.dir}/">
      <fileset dir="src/dist/" />
    </copy>
    <!--
      The US English Manual is the source of any translations and this it's the
      only one that is guaranteed to be up to date when doing the release, so we only pack
      that into it.
    -->
    <copy todir="${dist.dir}/documentation/_html" includeEmptyDirs="no">
      <fileset dir="build/manual/en-US" />
    </copy>
    <copy todir="${dist.dir}/documentation/_html/api" includeEmptyDirs="no">
      <fileset dir="build/api" />
    </copy>
    
    <copy todir="${dist.dir}/source" includeEmptyDirs="no">
      <fileset dir="." defaultexcludes="no">
        <exclude name="**/*.bak" />
        <exclude name="**/*.~*" />
        <include name="src/**" />
        <include name="examples/**" />
        <include name=".settings/**" />
        <include name="*.xml" />
        <include name="*.sample" />
        <include name="*.txt" />
        <include name="osgi.bnd" />
        <include name=".classpath" />
        <include name=".project" />
        <include name=".git*" />
      </fileset>
    </copy>
    
    <!-- Package the distro -->
    <property name="freemarker.tar" value="build/freemarker-${version}.tar" />
    <property name="freemarker.gzip" value="${freemarker.tar}.gz" />
    <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="maven-pom">
    <echo file="build/pom.xml"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  
  <parent>
    <groupId>org.sonatype.oss</groupId>
    <artifactId>oss-parent</artifactId>
    <version>9</version>
  </parent>
  
  <groupId>org.freemarker</groupId>
  <artifactId>freemarker-gae</artifactId>
  <version>${mavenVersion}</version>
  
  <packaging>jar</packaging>
  
  <name>FreeMarker</name>
  <description>
    Google App Engine compliant variation of FreeMarker.
    FreeMarker is a "template engine"; a generic tool to generate text output based on templates.
  </description>
  <url>http://freemarker.org/</url>
  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://freemarker.org/LICENSE.txt</url>
    </license>
  </licenses>
  <scm>
    <connection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-freemarker.git</connection>
    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/maven.git</developerConnection>
    <!-- <url>https://github.com/apache/freemarker/tree/${project.scm.tag}</url> -->
    <tag>2.3-gae</tag>
  </scm>
  <developers>
    <developer>
      <name>Attila Szegedi</name>
    </developer>
    <developer>
      <name>Daniel Dekany</name>
      <email>ddekany@apache.org</email>
    </developer>
    <developer>
      <name>Jonathan Revusky</name>
    </developer>
  </developers>  
  
  <dependencies>
    <!-- no required dependencies -->
  </dependencies>
</project>
]]></echo>
  </target>
  
  <!--
    Uploads the freemarker.jar that is in the current DISTRIBUTION DIRECTORY
    to a Maven repository (snapshot or central).
    Use this after "dist" (without interleaving "clean").
  -->
  <target name="maven-dist" depends="maven-pom"
      description="Releases the already built distro to a Maven repository">
    <jar destfile="build/maven-source-attachment.jar">
      <fileset dir="${dist.dir}/source/src/main/java" />
      <fileset dir="${dist.dir}/source/src/main/resources" />
    </jar>

    <jar destfile="build/maven-javadoc-attachment.jar">
      <fileset dir="${dist.dir}/documentation/_html/api" />
    </jar>

    <property name="maven-server-id" value="ossrh" />
    <property name="maven-repository-url" value="https://oss.sonatype.org/service/local/staging/deploy/maven2/" />
    <!--
    Don't deploy to public snapshot repositories here!
    It isn't backward compatible as version ranges will pick them up.
    -->
    
    <input
       validargs="y,n"
       addproperty="mavenUpload.answer"
    >
You are about uploading
${dist.dir}/freemarker.jar
and its attachments to this Maven repository:
${maven-repository-url}
with Maven artifact version number ${mavenVersion}.
Note that it's assumed that you have run `ant dist` just before this.
Proceed? </input>
    <condition property="mavenUpload.yes">
      <equals arg1="y" arg2="${mavenUpload.answer}"/>
    </condition>
    <fail unless="mavenUpload.yes" message="Task aborted by user." />
    
		<!-- Sign and deploy the main artifact -->
		<exec executable="${mvnCommand}">
			<arg value="org.apache.maven.plugins:maven-gpg-plugin:1.3:sign-and-deploy-file" />
			<arg value="-Durl=${maven-repository-url}" />
			<arg value="-DrepositoryId=${maven-server-id}" />
			<arg value="-DpomFile=build/pom.xml" />
			<arg value="-Dfile=${dist.dir}/freemarker.jar" />
      <arg value="-Pgpg" />
		</exec>

		<!-- Sign and deploy the sources artifact -->
		<exec executable="${mvnCommand}">
			<arg value="org.apache.maven.plugins:maven-gpg-plugin:1.3:sign-and-deploy-file" />
			<arg value="-Durl=${maven-repository-url}" />
			<arg value="-DrepositoryId=${maven-server-id}" />
			<arg value="-DpomFile=build/pom.xml" />
			<arg value="-Dfile=build/maven-source-attachment.jar" />
			<arg value="-Dclassifier=sources" />
      <arg value="-Pgpg" />
		</exec>

		<!-- Sign and deploy the javadoc artifact -->
		<exec executable="${mvnCommand}">
			<arg value="org.apache.maven.plugins:maven-gpg-plugin:1.3:sign-and-deploy-file" />
			<arg value="-Durl=${maven-repository-url}" />
			<arg value="-DrepositoryId=${maven-server-id}" />
			<arg value="-DpomFile=build/pom.xml" />
			<arg value="-Dfile=build/maven-javadoc-attachment.jar" />
			<arg value="-Dclassifier=javadoc" />
      <arg value="-Pgpg" />
		</exec>
    
    <echo>*****************************************************************</echo>
    <echo>Check the above lines for any Maven errors!</echo>
    <echo>Now you have to release the staged repo on</echo>
    <echo>https://oss.sonatype.org/.</echo>
    <echo>*****************************************************************</echo>
  </target>
  
  
  <!-- ================================================================== -->
  <!-- Eclipse                                                            -->
  <!-- ================================================================== -->

  <property name="eclipseFeatureFileName" value="org.freemarker.freemarker.feature_${versionForOSGi}.jar" />
  <property name="eclipseSourceFeatureFileName" value="org.freemarker.freemarker.source.feature_${versionForOSGi}.jar" />
  <property name="eclipsePluginFileName" value="org.freemarker.freemarker_${versionForOSGi}.jar" />
  <property name="eclipseSourcePluginFileName" value="org.freemarker.freemarker.source_${versionForOSGi}.jar" />
  
  <target name="eclipse-update-site" depends="jar">
    <delete dir="build/eclipse" />

    <!-- Create org.freemarker.freemarker feature: -->
    
    <mkdir dir="build/eclipse/freemarker/plugins" />
    <copy
        file="build/freemarker.jar"
        tofile="build/eclipse/freemarker/plugins/org.freemarker.freemarker_${versionForOSGi}.jar"
    />
    
    <mkdir dir="build/eclipse/freemarker/features/tmp" />
    <echo file="build/eclipse/freemarker/features/tmp/feature.xml"><![CDATA[<?xml version="1.0"?>
<feature
    id="org.freemarker.freemarker"
    label="FreeMarker"
    version="${versionForOSGi}">

  <description url="http://freemarker.org">
    Adds barebone FreeMarker as a plug-in (OSGi bundle) to Eclipse.
  </description>

  <license><!--
    -->Apache License, Version 2.0; see http://freemarker.org/LICENSE.txt.<!--
  --></license>

  <plugin
      id="org.freemarker.freemarker"
      download-size="0"
      install-size="0"
      version="${versionForOSGi}"
      unpack="false"
  />
</feature>
    ]]></echo>
    <jar
        basedir="build/eclipse/freemarker/features/tmp"
        destfile="build/eclipse/freemarker/features/${eclipseFeatureFileName}"
    />
    <delete dir="build/eclipse/freemarker/features/tmp" />

    <!-- Create org.freemarker.freemarker.source feature: -->
    
    <mkdir dir="build/eclipse/freemarker/plugins" />
    <jar 
        basedir="src/main/java" jarfile="build/eclipse/freemarker/plugins/org.freemarker.freemarker.source_${versionForOSGi}.jar" 
    >
      <manifest>
        <attribute name="Bundle-SymbolicName" value="${moduleOrg}.${moduleName}.source" />
        <attribute name="Bundle-Version" value="${versionForOSGi}" />
        <attribute name="Bundle-License" value="Apache License, Version 2.0" />
        <attribute name="Bundle-Vendor" value="freemarker.org" />
        <attribute name="Eclipse-SourceBundle" value='org.freemarker.freemarker;version="${versionForOSGi}";roots:="."' />
      </manifest>
    </jar>
    
    <mkdir dir="build/eclipse/freemarker/features/tmp" />
    <echo file="build/eclipse/freemarker/features/tmp/feature.xml"><![CDATA[<?xml version="1.0"?>
<feature
    id="org.freemarker.freemarker.source"
    label="FreeMarker source"
    version="${versionForOSGi}">

  <description url="http://freemarker.org">
    Adds source code attachment to the barebone FreeMarker plug-in.
  </description>

  <license><!--
    -->Apache License, Version 2.0; see http://freemarker.org/LICENSE.txt.<!--
  --></license>

  <plugin
      id="org.freemarker.freemarker.source"
      download-size="0"
      install-size="0"
      version="${versionForOSGi}"
      unpack="false"
  />
</feature>
    ]]></echo>
    <jar
        basedir="build/eclipse/freemarker/features/tmp"
        destfile="build/eclipse/freemarker/features/${eclipseSourceFeatureFileName}"
    />
    <delete dir="build/eclipse/freemarker/features/tmp" />

    <!-- Create site: -->

    <echo file="build/eclipse/freemarker/site.xml"><![CDATA[<?xml version="1.0"?>
<site>
  <feature url="features/${eclipseFeatureFileName}"
      id="org.freemarker.freemarker"
      version="${versionForOSGi}">
    <category name="core" />
    <category name="core-with-sources" />
  </feature>
  <feature url="features/${eclipseSourceFeatureFileName}"
      id="org.freemarker.freemarker.source"
      version="${versionForOSGi}">
    <category name="core-with-sources" />
  </feature>
  <category-def name="core" label="FreeMarker core">
    <description>
      Features that are used as dependencies of other products, but do nothing visible themselves.
    </description>
  </category-def>
  <category-def name="core-with-sources" label="FreeMarker core with sources">
    <description>
      Features that are used as dependencies of other products, but do nothing visible themselves.
      Includes source code attachments.
    </description>
  </category-def>
</site>
    ]]></echo>
    <echo message="**************************************************************" />
    <echo message="The new Eclipse update site is created in:" />
    <echo message="${basedir}/build/eclipse/freemarker" />
    <echo message="You can use this directory as a local update site in Eclipse," />
    <echo message="or if you are an admin who makes a release, you should replace" />
    <echo message="http://freemarker.org/eclipse/freemarker with this directory." />
    <echo message="**************************************************************" />
  </target>
  
  
  <!-- ================================================================== -->
  <!-- Dependency management (keep it exactly identical for all projects) -->
  <!-- ================================================================== -->
  
  <target name="_autoget-deps" unless="deps.available">
    <antcall target="update-deps" />
  </target>
  
  <target name="update-deps"
    description="Gets the latest version of the dependencies from the Web"
  >
    <echo>Getting dependencies...</echo>
    <echo>-------------------------------------------------------</echo>
    <ivy:settings id="remote" url="http://freemarker.org/repos/ivy/ivysettings-remote.xml" />
    <!-- Build an own repository that will serve us even offline: -->
    <ivy:retrieve settingsRef="remote" sync="true"
      ivypattern=".ivy.part/repo/[organisation]/[module]/ivy-[revision].xml"
      pattern=".ivy.part/repo/[organisation]/[module]/[artifact]-[revision].[ext]"
    />
    <echo>-------------------------------------------------------</echo>
    <echo>*** Successfully acquired dependencies from the Web ***</echo>
    <echo>Eclipse users: Now right-click on ivy.xml and Resolve! </echo>
    <echo>-------------------------------------------------------</echo>
    <!-- Only now that we got all the dependencies will we delete anything. -->
    <!-- Thus a net or repo outage doesn't left us without the dependencies. -->

    <!-- Save the resolution cache from the soon coming <delete>: -->
    <move todir=".ivy.part/update-deps-reso-cache">
      <fileset dir=".ivy/update-deps-reso-cache" />
    </move>
    <!-- Drop all the old stuff: -->
    <delete dir=".ivy" />
    <!-- And use the new stuff instead: -->
    <move todir=".ivy">
      <fileset dir=".ivy.part" />
    </move>
  </target>

  <!-- Do NOT call this from 'clean'; offline guys would stuck after that. -->
  <target name="clean-deps"
    description="Deletes all dependencies"
  >
    <delete dir=".ivy" />
  </target>

  <target name="publish-override" depends="jar"
    description="Ivy-publishes THIS project locally as an override"
  >
    <ivy:resolve />
    <ivy:publish
      pubrevision="${moduleBranch}-branch-head"
      artifactspattern="build/[artifact].[ext]"
      overwrite="true" forcedeliver="true"
      resolver="freemarker-devel-local-override"
    >
      <artifact name="freemarker" type="jar" ext="jar" />
    </ivy:publish>
    <delete file="build/ivy.xml" />  <!-- ivy:publish makes this -->
    <echo>-------------------------------------------------------</echo>
    <echo>*** Don't forget to `ant unpublish-override` later! ***</echo>
  </target>

  <target name="unpublish-override"
    description="Undoes publish-override (made in THIS project)"
  >
    <delete dir="${user.home}/.ivy2/freemarker-devel-local-override/${moduleOrg}/${moduleName}" />
    <delete dir="${user.home}/.ivy2/freemarker-devel-local-override-cache/${moduleOrg}/${moduleName}" />
  </target>  

  <target name="unpublish-override-all"
    description="Undoes publish-override-s made in ALL projects"
  >
    <delete dir="${user.home}/.ivy2/freemarker-devel-local-override" />
    <delete dir="${user.home}/.ivy2/freemarker-devel-local-override-cache" />
  </target>  

  <target name="uninstall"
    description="Deletes external files created by FreeMarker developement"
  >
    <delete dir="${user.home}/.ivy2/freemarker-devel-cache" />
    <delete dir="${user.home}/.ivy2/freemarker-devel-local-override" />
    <delete dir="${user.home}/.ivy2/freemarker-devel-local-override-cache " />
  </target>

  <target name="report-deps"
    description="Creates a HTML document that summarizes the dependencies."
  >
    <mkdir dir="build/deps-report" />
    <ivy:resolve />
    <ivy:report todir="build/deps-report" />
  </target>
  
  <target name="ide-dependencies" description="If your IDE has no Ivy support, this generates ide-lib/*.jar for it">
    <mkdir dir="ide-dependencies" />
    <delete includeEmptyDirs="true">  
      <fileset dir="ide-dependencies">  
         <include name="*/**" />  
      </fileset>  
    </delete>    
    <ivy:retrieve conf="IDE" pattern="ide-dependencies/[artifact]-[revision].[ext]" />
  </target>
  
  <!--
    This meant to be called on the Continuous Integration server, so the
    integration builds appear in the freemarker.org public Ivy repository.
    The artifacts must be already built.
  -->
  <target name="server-publish-last-build"
    description="(For the Continuous Integration server only)"
  >
    <delete dir="build/dummy-server-ivy-repo" />
    <ivy:resolve />
    <ivy:publish
      pubrevision="${moduleBranch}-branch-head"
      artifactspattern="build/[artifact].[ext]"
      overwrite="true" forcedeliver="true"
      resolver="server-publishing-target"
    >
      <artifact name="freemarker" type="jar" ext="jar" />
    </ivy:publish>
    <delete file="build/ivy.xml" />  <!-- ivy:publish makes this -->
  </target>
  
  <target name="rat">
    <ivy:cachepath conf="rat" pathid="ivy.dep" />
    <taskdef
      uri="antlib:org.apache.rat.anttasks"
      resource="org/apache/rat/anttasks/antlib.xml"
      classpathref="ivy.dep"
    />  
    
    <rat:report reportFile="build/rat-report.txt">
        <fileset dir="src"/>
    </rat:report>
    <echo level="info"><!--
    -->Rat report was written into build/rat-report.txt<!--
    --></echo>
  </target>

  <target name="archive" depends=""
    description='Archives project with Git repo into the "archive" directory.'
  >
    <mkdir dir="archive" />
    <tstamp>
      <format property="tstamp" pattern="yyyyMMdd-HHmm" />
    </tstamp>
    <delete file="archive/freemarker-git-${tstamp}.tar" />
    <delete file="archive/freemarker-git-${tstamp}.tar.bz2" />
    <tar tarfile="archive/freemarker-git-${tstamp}.tar"
      basedir="."
      longfile="gnu"
      excludes="build/** .build/** .bin/** .ivy/**  archive/**"
    />
    <bzip2 src="archive/freemarker-git-${tstamp}.tar"
        zipfile="archive/freemarker-git-${tstamp}.tar.bz2" />
    <delete file="archive/freemarker-git-${tstamp}.tar" />
  </target>
    
</project>
