<?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.90.1" conf="*->default" />

		<dependency org="org.slf4j" name="slf4j-api" rev="1.6.1"
			conf="*->master" />
		<dependency org="org.slf4j" name="slf4j-log4j12" rev="1.6.1"
			conf="*->master" />

		<dependency org="commons-lang" name="commons-lang" rev="2.6"
			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.2.0"
			conf="*->default">
			<exclude org="hsqldb" name="hsqldb" />
			<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-*" />
			<exclude org="ant" name="ant" />
		</dependency>

		<dependency org="org.apache.tika" name="tika-core" rev="1.5" />
		<dependency org="com.ibm.icu" name="icu4j" rev="4.0.1" />

		<dependency org="org.mortbay.jetty" name="jetty-client"
			rev="6.1.22" />

		<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="com.google.guava" name="guava" rev="11.0.2" />
		<dependency org="com.google.code.crawler-commons" name="crawler-commons"
			rev="0.3" />

		<!--Configuration: test -->

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

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

		<!--global exclusion -->
		<exclude module="jmxtools" />
		<exclude module="jms" />
		<exclude module="jmxri" />

	</dependencies>

</ivy-module>
