<!--
   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">
    <info organisation="org.apache.solr" module="mcf"/>
    <dependencies>
      <dependency org="commons-codec" name="commons-codec" rev="1.6" transitive="false"/>
      <dependency org="commons-fileupload" name="commons-fileupload" rev="1.2.1" transitive="false"/>
      <dependency org="org.apache.httpcomponents" name="httpcore" rev="4.1.4" transitive="false"/>
      <dependency org="org.apache.httpcomponents" name="httpclient" rev="4.1.3" transitive="false"/>
      <dependency org="org.apache.httpcomponents" name="httpmime" rev="4.1.3" transitive="false"/>
      <dependency org="commons-httpclient" name="commons-httpclient" rev="3.1" transitive="false"/>
      <dependency org="org.slf4j" name="slf4j-api" rev="1.6.1" transitive="false"/>
      <dependency org="commons-io" name="commons-io" rev="2.1" transitive="false"/>
      <dependency org="commons-lang" name="commons-lang" rev="2.6" transitive="false"/>
      <dependency org="junit" name="junit" rev="4.10" transitive="false"/>
      <exclude org="*" ext="*" matcher="regexp" type="${ivy.exclude.types}"/> 
    </dependencies>
</ivy-module>
