<!--
  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.
-->

<!--
  AFTER CHANGING THIS FILE don't forget to issue: ant update-deps
-->
<!DOCTYPE ivy-module [
    <!ENTITY jetty.version "7.6.16.v20140903">
    <!ENTITY slf4j.version "1.6.1">
    <!ENTITY spring.version "2.5.6.SEC03">
]>
<ivy-module version="2.0">
  <info organisation="org.freemarker" module="freemarker">
    <license name="Apache License, Version 2.0" url="http://freemarker.org/docs/app_license.html" />
    <description homepage="http://freemarker.org/">
      FreeMarker is a &quot;template engine&quot;; a generic tool to
      generate text output (anything from HTML to autogenerated source
      code) based on templates.
    </description>
  </info>
  <configurations>
    <conf name="default" extends="runtime" />
    
    <conf name="runtime"
        description="for using FreeMarker under J2SE 1.4+ (no optional dependencies included)"
    />

    <conf name="build.base" extends="default" visibility="private"
        description="for building FreeMarker without dependencies that optinal dependencies"
    />

    <conf name="build.jsp2.0" extends="build.base"
        description="for building FreeMarker with JSP 2.0 support"
    />
    <conf name="build.jsp2.1" extends="build.base"
        description="for building FreeMarker with JSP 2.1 support"
    />

    <conf name="build.jython2.0" extends="build.base"
        description="for building FreeMarker with Jython 2.0 support"
    />
    <conf name="build.jython2.2" extends="build.base"
        description="for building FreeMarker with Jython 2.2 support"
    />
    <conf name="build.jython2.5" extends="build.base"
        description="for building FreeMarker with Jython 2.5 support"
    />
    
    <conf name="test" extends="build.jython2.5"
        description="commons for both building and running the FreeMarker test suite"
    />
    <conf name="build.test" extends="test"
        description="for building FreeMarker test suite"
    />
    <conf name="run.test" extends="test"
        description="for running FreeMarker test suite"
    />

    <conf name="IDE" extends="build.test"
        description="to be used in IDE-s (maybe with the Ivy plugin)"
    />
    
    <conf name="retrotranslate" description="for retro-translation" />
    
    <conf name="parser" extends="default" description="for generating parser" />
    
    <conf name="manual" description="for generating the manual with Docgen" />
    
    <conf name="bnd" description="for creating OSGi bundle" />
    
    <conf name="example.servlet" description="servlet-based examples" />
    <conf name="example.webapp1" extends="example.servlet" />
    <conf name="example.webapp2" extends="example.servlet" />
    <conf name="example.struts-webapp" extends="example.servlet" />
    <conf name="example.ant" />
  </configurations>
  <publications>
    <artifact name="freemarker" type="jar" conf="runtime" ext="jar" />
  </publications>
  <dependencies>
    <!-- build -->
    
    <dependency org="jaxen" name="jaxen" rev="1.0-FCS" conf="build.base->default" />
    <dependency org="saxpath" name="saxpath" rev="1.0-FCS" conf="build.base->default" />
    <dependency org="xalan" name="xalan" rev="2.7.0" conf="build.base->default">
      <!-- The lowerst supported xml-apis version depends on JDK version; prevent any collosion: -->
      <exclude org="xml-apis" module="xml-apis" />
    </dependency>
    <dependency org="dom4j" name="dom4j" rev="1.3" conf="build.base->default" /> <!-- legacy -->
    <dependency org="jdom" name="jdom" rev="1.0b8" conf="build.base->default" /> <!-- legacy -->

    <dependency org="ant" name="ant" rev="1.6.5" conf="build.base->default">
      <!-- The lowerst supported xml-apis version depends on JDK version; prevent any collosion: -->
      <exclude org="xml-apis" module="xml-apis" />
    </dependency>
    
    <dependency org="javax.servlet.jsp" name="jsp-api" rev="2.0" conf="build.jsp2.0->default; example.struts-webapp->default" />
    <dependency org="javax.servlet" name="servlet-api" rev="2.4" conf="build.jsp2.0->default; example.servlet->default" />
    <dependency org="javax.servlet.jsp" name="jsp-api" rev="2.1" conf="build.jsp2.1->default" />
    <dependency org="javax.servlet" name="servlet-api" rev="2.5" conf="build.jsp2.1->default" />
    
    <dependency org="rhino" name="js" rev="1.6R1" conf="build.base->default" />

    <!-- We use Jython 2.1 because there was no 2.0 in central; the relevant methods are the same. -->
    <dependency org="jython" name="jython" rev="2.1" conf="build.jython2.0->default" />
    <dependency org="org.python" name="jython" rev="2.2.1" conf="build.jython2.2->default" />
    <dependency org="org.python" name="jython" rev="2.5.0" conf="build.jython2.5->default" />
    
    <dependency org="avalon-logkit" name="avalon-logkit" rev="2.0" conf="build.base->default" />
    <dependency org="org.slf4j" name="slf4j-api" rev="&slf4j.version;" conf="build.base->default" />
    <dependency org="org.slf4j" name="log4j-over-slf4j" rev="&slf4j.version;" conf="build.base->default" />
    <dependency org="org.slf4j" name="jcl-over-slf4j" rev="&slf4j.version;" conf="build.base->default" />
    <dependency org="commons-logging" name="commons-logging" rev="1.1.1" conf="build.base->default" />
    
    <dependency org="org.zeroturnaround" name="javarebel-sdk" rev="1.2.2" conf="build.base->default" />

    <dependency org="com.google.code.findbugs" name="annotations" rev="3.0.0" conf="build.base->default" />
    
    <!--dependency org="javax.script" name="script-api" rev="1.0" conf="build.base->default" /-->
    <!--dependency org="org.visigoths" name="cavalry" rev="1.0" conf="build.base->default" /-->
    
    <!-- test -->
    
    <!-- Note: Ant doesn't contain junit.jar any more -->
    <dependency org="junit" name="junit" rev="4.12" conf="test->default" />
    <dependency org="org.hamcrest" name="hamcrest-library" rev="1.3" conf="test->default" />

    <dependency org="ch.qos.logback" name="logback-classic" rev="1.1.2" conf="test->default" />

    <dependency org="commons-io" name="commons-io" rev="2.2" conf="test->default" />
    <dependency org="com.google.guava" name="guava-jdk5" rev="17.0" conf="test->default" />

    <dependency org="org.eclipse.jetty" name="jetty-server" rev="&jetty.version;" conf="test->default" />
    <dependency org="org.eclipse.jetty" name="jetty-webapp" rev="&jetty.version;" conf="test->default" />
    <dependency org="org.eclipse.jetty" name="jetty-jsp" rev="&jetty.version;" conf="test->default" />
    <dependency org="org.eclipse.jetty" name="jetty-util" rev="&jetty.version;" conf="test->default" />
    
    <dependency org="displaytag" name="displaytag" rev="1.2" conf="test->default">
      <exclude org="com.lowagie" name="itext" />
      <exclude org="org.slf4j" name="slf4j-log4j12" />
      <exclude org="org.slf4j" name="jcl104-over-slf4j" />
      <exclude org="log4j" name="log4j" />
    </dependency>

    <dependency org="org.springframework" name="spring-core" rev="&spring.version;" conf="test->default">
      <exclude org="commons-logging" name="commons-logging" />
    </dependency>
    <dependency org="org.springframework" name="spring-test" rev="&spring.version;" conf="test->default">
      <exclude org="commons-logging" name="commons-logging" />
    </dependency>

    <!-- docs -->
    
    <dependency org="org.freemarker" name="docgen" rev="2.0-branch-head" conf="manual->default" changing="true" />
    
    <!-- parser -->
    
    <dependency org="net.java.dev.javacc" name="javacc" rev="6.1.2" conf="parser->default" />
    
    <!-- bnd -->
    
    <dependency org="biz.aQute" name="bnd" rev="1.50.0" conf="bnd->default" />
    
    <!-- As the tests *run* on Ant, so it's a provided dependency there. -->
    <exclude org="ant" module="ant" conf="run.test" />
    
    <!-- Ensure that JSP versions don't accidentally hide each-other -->
    
    <conflict org="javax.servlet.jsp" module="jsp-api" manager="strict" />
    
  </dependencies>
</ivy-module>