 <?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.v20210213-M16</version>
    <relativePath>../pom-first.xml</relativePath>
  </parent>

  <artifactId>org.apache.directory.studio.openldap.config.acl.editor</artifactId>
  <name>Apache Directory Studio OpenLDAP ACL Configuration Editor</name>
  <packaging>bundle</packaging>
  <description/>

  <dependencies>
    <dependency>
      <groupId>antlr</groupId>
      <artifactId>antlr</artifactId>
      <version>${antlr.version}</version>
    </dependency>
  </dependencies> 
  
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>antlr-maven-plugin</artifactId>
        <configuration>
          <grammars>*.g</grammars>
        </configuration>
        
        <executions>
          <execution>
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
     
      <!-- MANIFEST.MF Generation -->
      <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.openldap.config.acl.OpenLdapAclEditorPlugin</Bundle-Activator>
            <Import-Package>
 antlr,
 antlr.collections,
 antlr.collections.impl,
 org.slf4j
            </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.valueeditors,
 org.apache.directory.studio.openldap.config.editor,
 org.eclipse.core.runtime,
 org.eclipse.jface.text,
 org.eclipse.ui,
 org.eclipse.ui.editors,
 org.eclipse.ui.forms
            </Require-Bundle>
            <Export-Package>org.apache.directory.studio.openldap.config.acl,
 org.apache.directory.studio.openldap.config.acl.dialogs,
 org.apache.directory.studio.openldap.config.acl.editor,
 org.apache.directory.studio.openldap.config.acl.model,
 org.apache.directory.studio.openldap.config.acl.sourceeditor,
 org.apache.directory.studio.openldap.config.acl.widgets,
 org.apache.directory.studio.openldap.config.acl.widgets.composites</Export-Package>
          </instructions>
        </configuration>
        <executions>
          <execution>
            <id>generate-manifest</id>
            <phase>process-classes</phase>
            <goals>
              <goal>manifest</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
