<?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.apache.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.jsecurity" name="docbook-libs" rev="1.0.0" transitive="false" conf="docbook">
            <artifact name="docbook-libs" type="zip" ext="zip"/>
        </dependency>

    </dependencies>

</ivy-module>
