<?xml version="1.0" ?>

<!-- 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="1.0">
  <info organisation="org.apache.nutch" module="nutch">
    <license name="Apache 2.0"
      url="http://www.apache.org/licenses/LICENSE-2.0.txt/" />
    <ivyauthor name="Apache Nutch Team" url="http://nutch.apache.org" />
    <description homepage="http://nutch.apache.org">Nutch is an open source web-search
      software. It builds on Hadoop, Tika and Solr, adding web-specifics, such as a crawler, 
      a link-graph database etc.
    </description>
  </info>

  <configurations>
    <include file="${basedir}/ivy/ivy-configurations.xml" />
  </configurations>

  <publications>
    <!--get the artifact from our module name -->
    <artifact conf="master" />
  </publications>

  <dependencies>
    <dependency org="org.elasticsearch" name="elasticsearch" rev="0.19.4" 
                conf="*->default,sources"/>
  
    <dependency org="org.apache.solr" name="solr-solrj" rev="3.4.0"
      conf="*->default" />
    <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.6.1"
      conf="*->master" />

    <dependency org="commons-lang" name="commons-lang" rev="2.4"
      conf="*->default" />
    <dependency org="commons-collections" name="commons-collections"
      rev="3.1" conf="*->default" />
    <dependency org="commons-httpclient" name="commons-httpclient"
      rev="3.1" conf="*->master" />
    <dependency org="commons-codec" name="commons-codec" rev="1.3"
      conf="*->default" />

    <dependency org="org.apache.hadoop" name="hadoop-core"
      rev="1.0.3" conf="*->default">
      <exclude org="net.sf.kosmosfs" name="kfs" />
      <exclude org="net.java.dev.jets3t" name="jets3t" />
      <exclude org="org.eclipse.jdt" name="core" />
      <exclude org="org.mortbay.jetty" name="jsp-*" />
    </dependency>

    <dependency org="com.ibm.icu" name="icu4j" rev="4.0.1" />
    <dependency org="org.apache.tika" name="tika-core" rev="1.1" />
    <!-- 
    <dependency org="org.apache.tika" name="tika-parsers" rev="0.10"/> 
    -->

    <dependency org="org.apache.gora" name="gora-core" rev="0.2.1" conf="*->compile"/>

    <dependency org="log4j" name="log4j" rev="1.2.15" conf="*->master" />

    <dependency org="xerces" name="xercesImpl" rev="2.9.1" />
    <dependency org="xerces" name="xmlParserAPIs" rev="2.6.2" />
    <dependency org="oro" name="oro" rev="2.0.8" />

    <dependency org="org.jdom" name="jdom" rev="1.1" conf="*->default" />

    <dependency org="com.google.guava" name="guava" rev="11.0.2" />

    <!--Configuration: test -->

    <!--artifacts needed for testing -->
    <dependency org="junit" name="junit" rev="3.8.1" conf="test->default" />

    <dependency org="org.apache.hadoop" name="hadoop-test" rev="1.0.3" conf="test->default">
      <exclude org="net.sf.kosmosfs" name="kfs" />
      <exclude org="net.java.dev.jets3t" name="jets3t" />
      <exclude org="org.eclipse.jdt" name="core" />
      <exclude org="org.mortbay.jetty" name="jsp-*" />
    </dependency>

    <dependency org="org.mortbay.jetty" name="jetty" rev="6.1.26" conf="test->default" />
    <dependency org="org.mortbay.jetty" name="jetty-util" rev="6.1.26" conf="test->default" />
    <dependency org="org.mortbay.jetty" name="jetty-client" rev="6.1.26" />

    <dependency org="org.hsqldb" name="hsqldb" rev="2.2.8" conf="*->default" />
    <dependency org="org.jdom" name="jdom" rev="1.1" conf="test->default"/>

    <dependency org="org.apache.gora" name="gora-sql" rev="0.1.1-incubating"
      conf="*->default" />

    <dependency org="org.restlet.jse" name="org.restlet" rev="2.0.5" conf="*->default" />
    <dependency org="org.restlet.jse" name="org.restlet.ext.jackson" rev="2.0.5" 
      conf="*->default" />

    <!-- Uncomment this to use MySQL as database with SQL as Gora store. -->
    <!-- 
    <dependency org="mysql" name="mysql-connector-java" rev="5.1.18" conf="*->default"/> 
    -->

    <!-- Uncomment this to use HBase as Gora backend. -->
    <!-- 
    <dependency org="org.apache.gora" name="gora-hbase" rev="0.2.1" conf="*->default" />
    -->


    <!-- Uncomment this to use Accumulo as Gora backend. -->
    <!-- 
    <dependency org="org.apache.gora" name="gora-accumulo" rev="0.2.1" conf="*->default" />
    -->

    <!-- Uncomment this to use Cassandra as Gora backend. -->
    <!-- 
    <dependency org="org.apache.gora" name="gora-cassandra" rev="0.2.1" conf="*->default" />
    -->

    <!--global exclusion -->
    <exclude module="ant" />
    <exclude module="slf4j-jdk14" />
    <exclude module="slf4j-simple" />
    <exclude org="hsqldb"/>
    <exclude org="maven-plugins"/>
    <exclude module="jmxtools" />
    <exclude module="jms" />
    <exclude module="jmxri" />
    <exclude module="thrift" />
  </dependencies>

</ivy-module>
