<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2015 BSI Business Systems Integration AG.
    All rights reserved. This program and the accompanying materials
    are made available under the terms of the Eclipse Public License v1.0
    which accompanies this distribution, and is available at
    http://www.eclipse.org/legal/epl-v10.html

    Contributors:
        BSI Business Systems Integration AG - initial API and implementation

-->
<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.eclipse.scout.sdk</groupId>
    <artifactId>org.eclipse.scout.sdk</artifactId>
    <version>11.0.0.alpha_3</version>
    <relativePath>../org.eclipse.scout.sdk</relativePath>
  </parent>

  <groupId>org.eclipse.scout.sdk.s2e</groupId>
  <artifactId>org.eclipse.scout.sdk.s2e.ui</artifactId>
  <packaging>bundle</packaging>
  <name>${project.groupId}:${project.artifactId}</name>

  <properties>
    <bundle.symbolicName>${project.artifactId}</bundle.symbolicName>
    <bundle.namespace>${project.artifactId}</bundle.namespace>
    <bundle.version>${scout.base.version}</bundle.version>
  </properties>

  <dependencies>
    <!-- Build Dependencies -->
    <!-- Build Dependencies (Provided) -->
    <dependency>
      <groupId>org.eclipse.scout.sdk.s2e</groupId>
      <artifactId>org.eclipse.scout.sdk.s2e</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.sdk.s2e</groupId>
      <artifactId>org.eclipse.scout.sdk.s2e.doc</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jdt</groupId>
      <artifactId>org.eclipse.jdt.launching</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jdt</groupId>
      <artifactId>org.eclipse.jdt.ui</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jdt</groupId>
      <artifactId>org.eclipse.jdt.debug.ui</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.sdk.deps</groupId>
      <artifactId>org.eclipse.m2e.core.ui</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.platform</groupId>
      <artifactId>org.eclipse.swt.${osgi.platform}</artifactId>
      <scope>provided</scope>
    </dependency>
  </dependencies>


  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <!-- Do not execute duplicate finder because there may be lots of duplicates in OSGi bundles which is ok in an OSGi environment -->
          <groupId>org.basepom.maven</groupId>
          <artifactId>duplicate-finder-maven-plugin</artifactId>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <groupId>org.basepom.maven</groupId>
        <artifactId>duplicate-finder-maven-plugin</artifactId>
        <configuration>
          <!-- not required because it is a bundle: duplicate classes are allowed in OSGi -->
          <skip>true</skip>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <configuration>
          <instructions>
            <Bundle-Name>Scout SDK User Interface</Bundle-Name>
            <Import-Package>
              !javax.swing.*,
              !javax.xml*,
              !jakarta.swing.*,
              !jakarta.xml*,
              !org.eclipse.core.runtime*,
              !org.eclipse.core.resources*,
              !org.eclipse.jdt.core*,
              !org.eclipse.jdt.internal*,
              !org.eclipse.jdt.ui*,
              !org.eclipse.jdt.launching*,
              !org.eclipse.scout.sdk.core*,
              !org.eclipse.scout.sdk.s2e*,
              !org.eclipse.ui.*,
              !org.eclipse.jface.text*,
              !org.osgi.framework.*,
              !org.eclipse.text*,
              !org.eclipse.m2e.core.*,
              !org.eclipse.jface*,
              !org.osgi.*,
              *
            </Import-Package>
            <Require-Bundle>
              org.eclipse.scout.sdk.s2e;bundle-version="[11.0,11.1)";visibility:=reexport,
              org.eclipse.scout.sdk.s2e.doc;bundle-version="[11.0,11.1)";visibility:=reexport,
              org.eclipse.jdt.ui;bundle-version="[3.21,4)";visibility:=reexport,
              org.eclipse.jdt.debug.ui;bundle-version="[3.10.600,4)";visibility:=reexport,
              org.eclipse.ui.workbench.texteditor;bundle-version="[3.14.100,4)";visibility:=reexport,
              org.eclipse.ui.workbench;bundle-version="[3.118,4)";visibility:=reexport,
              org.eclipse.ui.ide;bundle-version="[3.17,4)";visibility:=reexport,
              org.eclipse.ui.editors;bundle-version="[3.13.100,4)";visibility:=reexport,
              org.eclipse.ui.forms;bundle-version="[3.9,4)";visibility:=reexport,
              org.eclipse.ui.console;bundle-version="[3.9.100,4)";visibility:=reexport,
              org.eclipse.jface.text;bundle-version="[3.16.200,4)";visibility:=reexport,
              org.eclipse.jface;bundle-version="[3.19,4)";visibility:=reexport,
              org.eclipse.jface.databinding;bundle-version="[1.11,2)";visibility:=reexport,
              org.eclipse.m2e.core.ui;bundle-version="[1.15,2)";visibility:=reexport
            </Require-Bundle>
            <Bundle-Activator>org.eclipse.scout.sdk.s2e.ui.internal.S2ESdkUiActivator</Bundle-Activator>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
