<?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.
  -->
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">

    <info organisation="org.ki" module="ki" revision="0.9.0" status="snapshot"
          publication="20080814234001">
        <license name="Apache License, Version 2.0" url="http://www.apache.org/licenses/LICENSE-2.0.html"/>
        <ivyauthor name="Les Hazlewood" url="http://www.leshazlewood.com"/>
        <description homepage="http://ki.apache.org">
            Apache Ki is a powerful and flexible open-source Java security framework that cleanly handles
            authentication, authorization, enterprise session management, single sign-on and cryptography services.

            Our mission: To provide the most robust and comprehensive Java security framework available while
            also being very easy to understand and extremely simple to use.
        </description>
    </info>

    <configurations defaultconfmapping="*->default">
        <conf name="core" description="Dependencies for the core module."/>
        <conf name="web" extends="core" description="Depdencies for the web module."/>
        <conf name="ehcache" extends="core" description="Dependencies for the ehcache module."/>
        <conf name="quartz" extends="core" description="Dependencies for the quartz module."/>
        <conf name="spring" extends="web" description="Dependencies for the spring module."/>
        <conf name="samples" extends="web,ehcache,quartz,spring"
              description="Required dependencies when running one of the sample web applications."/>
        <conf name="retroweaver"/>
        <conf name="test" extends="*" description="Any and all dependencies so all functionality can be tested."/>
        <conf name="docbook"/>
    </configurations>

    <dependencies>

        <!-- Minimal deps, depending on VM: -->
        <dependency org="commons-logging" name="commons-logging" rev="1.1.1" transitive="false" conf="core"/>
        <dependency org="commons-beanutils" name="commons-beanutils" rev="1.7.0" transitive="false" conf="core"/>

        <!-- Feature-based dependencies: -->
        <dependency org="net.sourceforge.retroweaver" name="retroweaver" rev="2.0.5" conf="retroweaver"/>
        <dependency org="net.sourceforge.retroweaver" name="retroweaver-rt" rev="2.0.5" conf="retroweaver"/>
        <dependency org="net.sf.ehcache" name="ehcache" rev="1.4.1" transitive="false" conf="ehcache,samples"/>
        <dependency org="backport-util-concurrent" name="backport-util-concurrent" rev="3.1" transitive="false"
                    conf="samples"/>
        <dependency org="xerces" name="xercesImpl" rev="2.8.1" transitive="false" conf="samples"/>
        <dependency org="quartz" name="quartz" rev="1.5.2" transitive="false" conf="quartz"/>
        <dependency org="org.springframework" name="spring" rev="2.5.6" transitive="false" conf="spring,samples"/>
        <dependency org="org.springframework" name="spring-webmvc" rev="2.5.6" transitive="false"
                    conf="spring,samples"/>
        <dependency org="javax.servlet" name="servlet-api" rev="2.4" transitive="false" conf="web,samples"/>
        <dependency org="javax.servlet.jsp" name="jsp-api" rev="2.0" transitive="false" conf="web"/>

        <!-- Sample application dependencies: -->
        <dependency org="log4j" name="log4j" rev="1.2.15" transitive="false" conf="samples"/>
        <dependency org="javax.servlet" name="jstl" rev="1.2" transitive="false" conf="samples"/>
        <dependency org="taglibs" name="standard" rev="1.1.2" transitive="false" conf="samples"/>
        <dependency org="hsqldb" name="hsqldb" rev="1.8.0.7" transitive="false" conf="samples"/>
        <dependency org="org.hibernate" name="ejb3-persistence" rev="1.0.2.GA" conf="samples"/>
        <dependency org="org.hibernate" name="hibernate-annotations" rev="3.2.1.ga" conf="samples">
            <exclude org="javax.transaction"/>
        </dependency>
        <dependency org="org.hibernate" name="hibernate" rev="3.2.6.ga" conf="samples">
            <!-- JTA 1.0.1b jar is not allowed in the Maven repo because of Sun's binary license, so we have to
                 download it explictly from another location (we use Geronimo's version) -->
            <exclude org="javax.transaction"/>
        </dependency>
        <dependency org="org.apache.geronimo.specs" name="geronimo-jta_1.0.1B_spec" rev="1.1.1" conf="samples"/>

        <!-- Testing -->
        <dependency org="org.easymock" name="easymock" rev="2.3" transitive="false" conf="test"/>
        <dependency org="org.easymock" name="easymockclassextension" rev="2.3" transitive="false" conf="test"/>
        <dependency org="junit" name="junit" rev="4.4" transitive="false" conf="test"/>

        <dependency org="org.ki" name="docbook-libs" rev="1.0.0" transitive="false" conf="docbook">
            <artifact name="docbook-libs" type="zip" ext="zip"/>
        </dependency>

    </dependencies>

</ivy-module>
