<!--
   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="com.github.spotbugs" name="spotbugs-annotations" rev="${spotbugsannotations.version}" />
    <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"/>
        <exclude org="commons-io" module="commons-io"/>
    </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"/>
        <exclude org="commons-io" module="commons-io"/>
    </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"/>
        <exclude org="commons-io" module="commons-io"/>
    </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"/>
        <exclude org="commons-io" module="commons-io"/>
    </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"/>
        <exclude org="commons-io" module="commons-io"/>
    </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"/>
        <exclude org="commons-io" module="commons-io"/>
    </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"/>
        <exclude org="commons-io" module="commons-io"/>
    </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"/>
        <exclude org="commons-io" module="commons-io"/>
    </dependency>

    <dependency org="org.apache.kerby" name="kerby-config" rev="${kerby.version}" conf="test->default">
          <exclude org="org.slf4j" module="slf4j-api"/>
          <exclude org="org.slf4j" module="slf4j-log4j12"/>
    </dependency>
    <dependency org="org.apache.kerby" name="kerb-simplekdc" rev="${kerby.version}" conf="test->default">
        <exclude org="org.slf4j" module="slf4j-api"/>
    </dependency>
    <dependency org="org.apache.kerby" name="kerb-core"
                rev="${kerby.version}" conf="test->default">
        <exclude org="org.slf4j" module="slf4j-api"/>
    </dependency>
    <dependency org="org.apache.kerby" name="kerb-server"
                rev="${kerby.version}" conf="test->default"/>
    <dependency org="org.apache.kerby" name="kerb-common"
                rev="${kerby.version}" conf="test->default"/>
    <dependency org="org.apache.kerby" name="kerb-admin"
                rev="${kerby.version}" conf="test->default"/>
    <dependency org="org.apache.kerby" name="kerb-identity"
                rev="${kerby.version}" conf="test->default"/>
    <dependency org="org.apache.kerby" name="kerb-client"
                rev="${kerby.version}" conf="test->default"/>
    <dependency org="org.apache.kerby" name="kerb-util"
                rev="${kerby.version}" conf="test->default"/>
    <dependency org="org.apache.kerby" name="kerb-crypto"
                rev="${kerby.version}" conf="test->default"/>
    <dependency org="org.apache.kerby" name="kerby-util"
                rev="${kerby.version}" conf="test->default"/>
    <dependency org="org.apache.kerby" name="kerby-asn1"
                rev="${kerby.version}" conf="test->default"/>

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