<?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>2.0.0.AM26-SNAPSHOT</version>
  </parent>
  
  <artifactId>apacheds-protocol-kerberos</artifactId>
  <name>ApacheDS Protocol Kerberos</name>
  <packaging>bundle</packaging>

  <description>The Kerberos Protocol Provider for ApacheDS</description>

  <dependencies>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>apacheds-core-api</artifactId>
    </dependency>
    
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>apacheds-i18n</artifactId>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>apacheds-kerberos-codec</artifactId>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>apacheds-protocol-shared</artifactId>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>apacheds-core-shared</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.api</groupId>
      <artifactId>api-asn1-api</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.api</groupId>
      <artifactId>api-ldap-model</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.mina</groupId>
      <artifactId>mina-core</artifactId>
    </dependency>

    <dependency>
      <groupId>javax.cache</groupId>
      <artifactId>cache-api</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>**/TestUtils.java</exclude>
          </excludes>
        </configuration>
      </plugin>
      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifestFile>META-INF/MANIFEST.MF</manifestFile>
            <addMavenDescriptor>false</addMavenDescriptor>
          </archive>
        </configuration>
      </plugin>
      
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <inherited>true</inherited>
        <extensions>true</extensions>
        <configuration>
          <manifestLocation>META-INF</manifestLocation>
          <instructions>
            <Bundle-SymbolicName>${project.groupId}.protocol.kerberos</Bundle-SymbolicName>
            <Export-Package>
                org.apache.directory.server.kerberos;version=${project.version},
                org.apache.directory.server.kerberos.changepwd;version=${project.version},
                org.apache.directory.server.kerberos.changepwd.protocol;version=${project.version},
                org.apache.directory.server.kerberos.changepwd.service;version=${project.version},
                org.apache.directory.server.kerberos.kdc;version=${project.version},
                org.apache.directory.server.kerberos.kdc.authentication;version=${project.version},
                org.apache.directory.server.kerberos.kdc.ticketgrant;version=${project.version},
                org.apache.directory.server.kerberos.protocol;version=${project.version},
                org.apache.directory.server.kerberos.protocol.codec;version=${project.version},
                org.apache.directory.server.kerberos.sam;version=${project.version}
            </Export-Package>
            <Import-Package>
                javax.naming,
                javax.naming.directory,
                javax.security.auth.kerberos,
                javax.cache,
                org.apache.directory.api.asn1;version=${org.apache.directory.api.version},
                org.apache.directory.api.asn1.ber;version=${org.apache.directory.api.version},
                org.apache.directory.api.asn1.ber.tlv;version=${org.apache.directory.api.version},
                org.apache.directory.api.ldap.model.constants;version=${org.apache.directory.api.version},
                org.apache.directory.api.ldap.model.entry;version=${org.apache.directory.api.version},
                org.apache.directory.api.ldap.model.exception;version=${org.apache.directory.api.version},
                org.apache.directory.api.ldap.model.name;version=${org.apache.directory.api.version},
                org.apache.directory.api.ldap.model.schema;version=${org.apache.directory.api.version},
                org.apache.directory.api.util;version=${org.apache.directory.api.version},
                org.apache.directory.server.constants;version=${project.version},
                org.apache.directory.server.core.api;version=${project.version},
                org.apache.directory.server.core.shared;version=${project.version},
                org.apache.directory.server.i18n;version=${project.version},
                org.apache.directory.server.kerberos.changepwd.exceptions;version=${project.version},
                org.apache.directory.server.kerberos.changepwd.io;version=${project.version},
                org.apache.directory.server.kerberos.changepwd.messages;version=${project.version},
                org.apache.directory.server.kerberos.shared.crypto.checksum;version=${project.version},
                org.apache.directory.server.kerberos.shared.crypto.encryption;version=${project.version},
                org.apache.directory.server.kerberos.shared.replay;version=${project.version},
                org.apache.directory.server.kerberos.shared.store;version=${project.version},
                org.apache.directory.server.protocol.shared;version=${project.version},
                org.apache.directory.server.protocol.shared.kerberos;version=${project.version},
                org.apache.directory.server.protocol.shared.transport;version=${project.version},
                org.apache.directory.shared.kerberos;version=${project.version},
                org.apache.directory.shared.kerberos.codec;version=${project.version},
                org.apache.directory.shared.kerberos.codec.changePwdData;version=${project.version},
                org.apache.directory.shared.kerberos.codec.options;version=${project.version},
                org.apache.directory.shared.kerberos.codec.types;version=${project.version},
                org.apache.directory.shared.kerberos.components;version=${project.version},
                org.apache.directory.shared.kerberos.crypto.checksum;version=${project.version},
                org.apache.directory.shared.kerberos.exceptions;version=${project.version},
                org.apache.directory.shared.kerberos.flags;version=${project.version},
                org.apache.directory.shared.kerberos.messages;version=${project.version},
                org.apache.mina.core.buffer;version=${mina.core.version},
                org.apache.mina.core.filterchain;version=${mina.core.version},
                org.apache.mina.core.service;version=${mina.core.version},
                org.apache.mina.core.session;version=${mina.core.version},
                org.apache.mina.filter.codec;version=${mina.core.version},
                org.apache.mina.transport.socket;version=${mina.core.version},
                org.apache.mina.transport.socket.nio;version=${mina.core.version},
                org.slf4j;version=${slf4j.api.bundleversion}
            </Import-Package>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
