<?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.
-->
<!--
  @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
-->
<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.studio</groupId>
    <artifactId>org.apache.directory.studio.tests-parent</artifactId>
    <version>2.0.0.v20210213-M16</version>
    <relativePath>../pom-first.xml</relativePath>
  </parent>

  <name>Apache Directory Studio Core Integration Tests</name>
  <artifactId>org.apache.directory.studio.test.integration.core</artifactId>
  <description/>
  <packaging>bundle</packaging>

  <build>
     <!-- MANIFEST.MF Generation -->
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <manifestLocation>META-INF</manifestLocation>
          <instructions>
            <Bundle-SymbolicName>${project.artifactId};singleton:=true</Bundle-SymbolicName>
            <Bundle-Localization>plugin</Bundle-Localization>
            <Eclipse-LazyStart>true</Eclipse-LazyStart>
            <Bundle-Activator>org.apache.directory.studio.test.integration.core.Activator</Bundle-Activator>
            
            <Require-Bundle>org.junit;bundle-version="4.11.0",
 org.hamcrest.library;bundle-version="1.3.0",
 org.apache.directory.server.apacheds-test-framework;bundle-version="${org.apache.directory.server.version}",
 org.apache.directory.server.annotations;bundle-version="${org.apache.directory.server.version}",
 org.apache.directory.server.xdbm.partition;bundle-version="${org.apache.directory.server.version}",
 org.apache.directory.server.jdbm.partition;bundle-version="${org.apache.directory.server.version}",
 org.apache.directory.server.core.annotations;bundle-version="${org.apache.directory.server.version}",
 org.apache.directory.server.core.api;bundle-version="${org.apache.directory.server.version}",
 org.apache.directory.server.protocol.ldap;bundle-version="${org.apache.directory.server.version}",
 org.apache.directory.api.asn1.api;bundle-version="${org.apache.directory.api.bundleversion}",
 org.apache.directory.api.ldap.client.api;bundle-version="${org.apache.directory.api.bundleversion}",
 org.apache.directory.api.ldap.codec.core;bundle-version="${org.apache.directory.api.bundleversion}",
 org.apache.directory.api.ldap.extras.codec.api;bundle-version="${org.apache.directory.api.bundleversion}",
 org.apache.directory.api.ldap.model;bundle-version="${org.apache.directory.api.bundleversion}",
 org.apache.directory.api.ldap.net.mina;bundle-version="${org.apache.directory.api.bundleversion}",
 org.apache.directory.api.util;bundle-version="${org.apache.directory.api.bundleversion}",
 org.apache.mina.core;bundle-version="${org.apache.mina.bundleversion}",
 org.apache.directory.studio.connection.core,
 org.apache.directory.studio.common.core,
 org.apache.directory.studio.ldapbrowser.core,
 org.apache.directory.studio.ldifparser,
 org.eclipse.core.runtime,
 org.eclipse.ui,
 javax.annotation</Require-Bundle>
            
            <Import-Package>org.apache.commons.codec.digest,
 org.apache.http.conn.ssl,
 org.dom4j,
 org.dom4j.io</Import-Package>
          
          </instructions>
        </configuration>
        <executions>
          <execution>
            <id>generate-manifest</id>
            <phase>process-classes</phase>
            <goals>
              <goal>manifest</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

</project>

