<!--
  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.directory.ldapstudio" module="ldapdtudio-schemas-plugin"/>
    <dependencies>
		<dependency org="commons-collections" name="commons-collections" rev="3.1"/>
		<dependency org="commons-configuration" name="commons-configuration" rev="1.2"/>
		<dependency org="commons-lang" name="commons-lang" rev="2.1"/>
		<dependency org="commons-logging" name="commons-logging" rev="1.1"/>
		<dependency org="org.apache.directory.server" name="apacheds-core-plugin" rev="1.5.0-SNAPSHOT"/>
		<dependency org="org.apache.directory.server" name="apacheds-core-shared" rev="1.5.0-SNAPSHOT"/>
		<dependency org="org.apache.directory.shared" name="shared-ldap" rev="0.9.6-SNAPSHOT"/>
		<dependency org="org.eclipse" name="ui-forms" rev="3.2.0-v20060315"/>
		<dependency org="org.slf4j" name="nlog4j" rev="1.2.24"/>
		<dependency org="velocity" name="velocity-dep" rev="1.4"/>
    </dependencies>
</ivy-module>
