<?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.plugins-parent</artifactId>
    <version>2.0.0.v20160628-M11</version>
    <relativePath>../pom-first.xml</relativePath>
  </parent>

  <artifactId>org.apache.directory.studio.ldapbrowser.ui</artifactId>
  <name>Apache Directory Studio LDAP Browser UI</name>
  <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.ldapbrowser.ui.BrowserUIPlugin</Bundle-Activator>
            
            <Export-Package>org.apache.directory.studio.entryeditors,
 org.apache.directory.studio.ldapbrowser.ui,
 org.apache.directory.studio.ldapbrowser.ui.actions,
 org.apache.directory.studio.ldapbrowser.ui.actions.proxy,
 org.apache.directory.studio.ldapbrowser.ui.dialogs,
 org.apache.directory.studio.ldapbrowser.ui.dialogs.preferences,
 org.apache.directory.studio.ldapbrowser.ui.dialogs.properties,
 org.apache.directory.studio.ldapbrowser.ui.editors.entry,
 org.apache.directory.studio.ldapbrowser.ui.editors.schemabrowser,
 org.apache.directory.studio.ldapbrowser.ui.editors.searchresult,
 org.apache.directory.studio.ldapbrowser.ui.perspective,
 org.apache.directory.studio.ldapbrowser.ui.search,
 org.apache.directory.studio.ldapbrowser.ui.views.browser,
 org.apache.directory.studio.ldapbrowser.ui.views.connection,
 org.apache.directory.studio.ldapbrowser.ui.views.modificationlogs,
 org.apache.directory.studio.ldapbrowser.ui.views.searchlogs,
 org.apache.directory.studio.ldapbrowser.ui.wizards</Export-Package>
 
            <Import-Package>
 org.apache.commons.lang
            </Import-Package>
            
            <Require-Bundle>
 org.apache.directory.api.ldap.model;bundle-version="${org.apache.directory.api.bundleversion}",
 org.apache.directory.api.util;bundle-version="${org.apache.directory.api.bundleversion}",
 org.apache.directory.studio.common.core,
 org.apache.directory.studio.common.ui,
 org.apache.directory.studio.connection.core,
 org.apache.directory.studio.connection.ui,
 org.apache.directory.studio.ldapbrowser.core,
 org.apache.directory.studio.ldapbrowser.common,
 org.apache.directory.studio.ldifeditor,
 org.apache.directory.studio.ldifparser,
 org.eclipse.core.resources,
 org.eclipse.core.runtime,
 org.eclipse.jface.text,
 org.eclipse.ui,
 org.eclipse.ui.editors,
 org.eclipse.ui.forms,
 org.eclipse.ui.ide,
 org.eclipse.ui.views,
 org.eclipse.ui.workbench.texteditor,
 org.eclipse.search
            </Require-Bundle>
          </instructions>
        </configuration>
        <executions>
          <execution>
            <id>generate-manifest</id>
            <phase>process-classes</phase>
            <goals>
              <goal>manifest</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

</project>

