 <?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.qualifier</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>
