<!--
   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:e="http://ant.apache.org/ivy/extra">

  <info organisation="org.apache.zookeeper"
        module="${name}" revision="${version}">
    <license name="Apache 2.0"/>
    <ivyauthor name="Apache ZooKeeper" url="http://zookeeper.apache.org"/>
    <description>ZooKeeper</description>
  </info>

  <configurations defaultconfmapping="default">
    <conf name="master"/>
    <conf name="default"/>
    <conf name="test" extends="default"/>
    <conf name="mvn-ant-task" visibility="private"/>
    <conf name="package" extends="master"/>
    <conf name="jdiff" visibility="private"/>
    <conf name="releaseaudit" visibility="private" description="Artifacts required for releaseaudit target"/>
    <conf name="owasp" visibility="private" description="Artifacts required for owasp target"/>
    <conf name="clover" visibility="private" description="Artifacts required for clover target"/>
  </configurations>

  <publications>
    <artifact name='org.apache.zookeeper' type='jar' ext='jar' />
  </publications>

  <dependencies>
    <dependency org="org.slf4j" name="slf4j-api" rev="${slf4j.version}"/>
    <dependency org="org.slf4j" name="slf4j-log4j12" rev="${slf4j.version}" transitive="false"/>

    <dependency org="org.apache.maven.wagon" name="wagon-http" rev="${wagon-http.version}"
                conf="mvn-ant-task->default"/>
    <dependency org="org.apache.maven" name="maven-ant-tasks" rev="${maven-ant-tasks.version}"
                conf="mvn-ant-task->default">
        <exclude org="org.codehaus.plexus" module="plexus-utils"/>
        <exclude org="org.apache.maven.wagon" module="wagon-provider-api" />
    </dependency>
    <!-- transitive false turns off dependency checking, log4j deps seem borked -->
    <dependency org="log4j" name="log4j" rev="${log4j.version}" transitive="false" conf="default"/>
    <dependency org="jline" name="jline" rev="${jline.version}" transitive="false" conf="default"/>

    <dependency org="org.apache.yetus" name="audience-annotations" rev="${audience-annotations.version}"/>

    <dependency org="io.netty" name="netty" conf="default" rev="${netty.version}">
      <artifact name="netty" type="jar" conf="default"/>
    </dependency>

    <dependency org="org.vafer" name="jdeb" rev="${jdeb.version}" conf="package->master"/>

    <dependency org="junit" name="junit" rev="${junit.version}" conf="test->default"/>
    <dependency org="org.mockito" name="mockito-all" rev="${mockito.version}"
               conf="test->default"/>
    <dependency org="com.puppycrawl.tools" name="checkstyle" rev="${checkstyle.version}"
                conf="test->default"/>
    <dependency org="commons-collections" name="commons-collections" 
                rev="${commons-collections.version}" conf="test->default"/>

    <dependency org="jdiff" name="jdiff" rev="${jdiff.version}"
                conf="jdiff->default"/>
    <dependency org="xerces" name="xerces" rev="${xerces.version}"
                conf="jdiff->default"/>

    <dependency org="org.apache.rat" name="apache-rat-tasks" 
                rev="${apache-rat-tasks.version}" conf="releaseaudit->default">
        <exclude org="commons-collections" module="commons-collections"/>
        <exclude org="commons-lang" module="commons-lang"/>
    </dependency>
    <dependency org="commons-lang" name="commons-lang" 
                rev="${commons-lang.version}" conf="releaseaudit->default"/>
    <dependency org="commons-collections" name="commons-collections"
                rev="${commons-collections.version}" conf="releaseaudit->default"/>
    <dependency org="org.owasp" name="dependency-check-ant"
                rev="${dependency-check-ant.version}" conf="owasp->default"/>

    <dependency org="commons-io" name="commons-io" rev="${commons-io.version}"
                conf="test->default"/>


    <!-- Apache directory server project, org.apache.directory.* packages for miniKdc tests -->
    <dependency org="org.apache.directory.server" name="apacheds-core-api" rev="${apache-directory-server.version}" conf="test->default">
        <exclude org="org.apache.directory.api" module="api-ldap-schema-data"/>
        <exclude org="org.slf4j" module="slf4j-api"/>
        <exclude org="commons-collections" module="commons-collections"/>
    </dependency>
    <dependency org="org.apache.directory.server" name="apacheds-interceptor-kerberos" rev="${apache-directory-server.version}" conf="test->default">
        <exclude org="org.apache.directory.api" module="api-ldap-schema-data"/>
        <exclude org="commons-collections" module="commons-collections"/>
        <exclude org="org.slf4j" module="slf4j-api"/>
    </dependency>
    <dependency org="org.apache.directory.server" name="apacheds-protocol-shared" rev="${apache-directory-server.version}" conf="test->default">
        <exclude org="org.apache.directory.api" module="api-ldap-schema-data"/>
        <exclude org="commons-collections" module="commons-collections"/>
        <exclude org="org.slf4j" module="slf4j-api"/>
    </dependency>
    <dependency org="org.apache.directory.server" name="apacheds-protocol-kerberos" rev="${apache-directory-server.version}" conf="test->default">
        <exclude org="org.apache.directory.api" module="api-ldap-schema-data"/>
        <exclude org="commons-collections" module="commons-collections"/>
        <exclude org="org.slf4j" module="slf4j-api"/>
    </dependency>
    <dependency org="org.apache.directory.server" name="apacheds-ldif-partition" rev="${apache-directory-server.version}" conf="test->default">
        <exclude org="org.apache.directory.api" module="api-ldap-schema-data"/>
        <exclude org="commons-collections" module="commons-collections"/>
        <exclude org="org.slf4j" module="slf4j-api"/>
    </dependency>
    <dependency org="org.apache.directory.server" name="apacheds-mavibot-partition" rev="${apache-directory-server.version}" conf="test->default">
        <exclude org="org.apache.directory.api" module="api-ldap-schema-data"/>
        <exclude org="commons-collections" module="commons-collections"/>
        <exclude org="org.slf4j" module="slf4j-log4j12"/>
        <exclude org="log4j" module="log4j"/>
        <exclude org="org.slf4j" module="slf4j-api"/>
    </dependency>
    <dependency org="org.apache.directory.api" name="api-all" rev="${apache-directory-api.version}" conf="test->default">
        <exclude org="xml-apis" module="xml-apis"/>
        <exclude org="xpp3" module="xpp3"/>
        <exclude org="dom4j" module="dom4j"/>
        <exclude org="commons-collections" module="commons-collections"/>
        <exclude org="org.slf4j" module="slf4j-api"/>
    </dependency>
    <dependency org="org.apache.directory.server" name="apacheds-jdbm-partition" rev="${apache-directory-server.version}" conf="test->default">
        <exclude org="org.apache.directory.api" module="api-ldap-schema-data"/>
        <exclude org="commons-collections" module="commons-collections"/>
        <exclude org="org.slf4j" module="slf4j-api"/>
    </dependency>
    <dependency org="org.apache.directory.server" name="apacheds-protocol-ldap" rev="${apache-directory-server.version}" conf="test->default">
        <exclude org="org.apache.directory.api" module="api-ldap-schema-data"/>
        <exclude org="commons-collections" module="commons-collections"/>
        <exclude org="org.slf4j" module="slf4j-api"/>
    </dependency>

    <dependency org="org.hamcrest" name="hamcrest-all" rev="${hamcrest.version}" conf="test->default" />

    <dependency org="org.openclover" name="clover" rev="${clover.version}" conf="clover->default"/>

    <conflict manager="strict"/>

  </dependencies>

</ivy-module>
