<?xml version="1.0" encoding="UTF-8"?>

<!--
  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.
-->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache.directory.server</groupId>
    <artifactId>apacheds-parent</artifactId>
    <version>1.5.7-SNAPSHOT</version>
  </parent>
  
  <artifactId>apacheds-jdbm-store</artifactId>
  <name>ApacheDS JDBM Store</name>
  <packaging>jar</packaging>

  <description>
    A JDBM entry store which does not have any dependency on core interfaces.
    The JDBM partition will use this store and build on it to adapt this to 
    server specific partition interfaces.
    Having this separate module without dependencies on core interfaces makes
    it easier to avoid cyclic dependencies between modules.  This is especially
    important for use within the bootstrap plugin which needs to build the
    schema partition used for bootstrapping the server.
  </description>

  <dependencies>
    <dependency>
      <artifactId>apacheds-i18n</artifactId>
      <groupId>${groupId}</groupId>
      <version>${version}</version>
    </dependency>

    <dependency>
      <artifactId>apacheds-jdbm</artifactId>
      <groupId>${groupId}</groupId>
      <version>${version}</version>
    </dependency>

    <dependency>
      <artifactId>apacheds-core-entry</artifactId>
      <groupId>${groupId}</groupId>
      <version>${version}</version>
    </dependency>

    <dependency>
      <artifactId>apacheds-core-avl</artifactId>
      <groupId>${groupId}</groupId>
      <version>${version}</version>
    </dependency>

    <dependency>
      <artifactId>apacheds-xdbm-tools</artifactId>
      <groupId>${groupId}</groupId>
      <version>${version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

