<!--
   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.thrift" module="libthrift" revision="0.6.0-dev" >
      <license name="Apache License 2.0" url="http://www.apache.org/licenses/LICENSE-2.0" />
      <ivyauthor name="Thrift Developers" url="thrift-dev@incubator.apache.org" />
      <repository name="apache repository" url="http://incubator.apache.org/thrift/" />
      <description homepage="http://incubator.apache.org/thrift/">
      Java bindings for the Apache Thrift RPC system
      </description>
    </info>
    <configurations defaultconfmapping="compile">
      <conf name="compile" />
      <conf name="test" extends="compile" visibility="private" />
    </configurations>
    <dependencies>
       <dependency org="org.slf4j" name="slf4j-api" rev="1.5.8" conf="* -> *,!sources,!javadoc"/>
       <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.5.8" conf="test -> *,!sources,!javadoc"/>
       <dependency org="commons-lang" name="commons-lang" rev="2.5" conf="* -> *,!sources,!javadoc"/>
       <dependency org="junit" name="junit" rev="4.4" conf="test -> *,!sources,!javadoc"/>
       <dependency org="javax.servlet" name="servlet-api" rev="2.5" conf="* -> *,!sources,!javadoc"/>
    </dependencies>
</ivy-module>
