<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright (c) 2010-2020 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
  ~ https://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 https://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.1</version>
    <relativePath>../org.eclipse.scout.sdk</relativePath>
  </parent>

  <groupId>org.eclipse.scout.sdk.s2e</groupId>
  <artifactId>org.eclipse.scout.sdk.s2e</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.osgi.version}</bundle.version>
  </properties>

  <dependencies>
    <!-- Build Dependencies -->
    <dependency>
      <groupId>org.eclipse.scout.sdk</groupId>
      <artifactId>org.eclipse.scout.sdk.core.s</artifactId>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.sdk</groupId>
      <artifactId>org.eclipse.scout.sdk.core.ecj</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.eclipse.jdt</groupId>
          <artifactId>ecj</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <!-- Build Dependencies (Provided) -->
    <dependency>
      <groupId>org.eclipse.jdt</groupId>
      <artifactId>org.eclipse.jdt.launching</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.platform</groupId>
      <artifactId>org.eclipse.debug.core</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jdt</groupId>
      <artifactId>org.eclipse.jdt.core.manipulation</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.sdk.deps</groupId>
      <artifactId>org.eclipse.m2e.core</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.sdk.deps</groupId>
      <artifactId>org.eclipse.m2e.archetype.common</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.archetype</groupId>
      <artifactId>archetype-catalog</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.archetype</groupId>
      <artifactId>archetype-common</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.apache.maven</groupId>
          <artifactId>maven-project</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.codehaus.plexus</groupId>
          <artifactId>plexus-container-default</artifactId>
        </exclusion>
      </exclusions>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <configuration>
          <instructions>
            <Bundle-Name>Scout SDK</Bundle-Name>
            <Import-Package>
              !javax.xml*,
              !jakarta.xml*,
              !org.eclipse.core.runtime*,
              !org.eclipse.core.resources*,
              !org.eclipse.jdt.core*,
              !org.eclipse.jdt.internal*,
              !org.eclipse.jdt.launching*,
              !org.eclipse.jface.text*,
              !org.eclipse.scout.sdk.s2e.*,
              !javax.annotation.*,
              !jakarta.annotation.*,
              !org.codehaus.plexus*,
              !org.eclipse.scout.sdk.s2e.*,
              !org.eclipse.text*,
              !org.eclipse.m2e.core*,
              !org.osgi.framework.*,
              !org.apache.maven.*,
              !org.eclipse.scout.sdk.core.*,
              !org.slf4j*,
              !okhttp*,
              !org.osgi.*,
              *
            </Import-Package>
            <Require-Bundle>
              org.eclipse.core.runtime;bundle-version="[3.17.100,4)";visibility:=reexport,
              org.eclipse.core.resources;bundle-version="[3.13.700,4)";visibility:=reexport,
              org.eclipse.jdt.core;bundle-version="[3.21,4)";visibility:=reexport,
              org.eclipse.jdt.core.manipulation;bundle-version="[1.13.100,2)";visibility:=reexport,
              org.eclipse.jdt.launching;bundle-version="[3.17,4)";visibility:=reexport,
              org.eclipse.text;bundle-version="[3.10.100,4)";visibility:=reexport,
              org.eclipse.m2e.maven.runtime;bundle-version="[1.15,2)";visibility:=reexport,
              org.eclipse.m2e.archetype.common;bundle-version="[1.15,2)";visibility:=reexport,
              org.eclipse.m2e.core;bundle-version="[1.15,2)";visibility:=reexport
            </Require-Bundle>

            <Bundle-Activator>org.eclipse.scout.sdk.s2e.S2ESdkActivator</Bundle-Activator>

            <!-- embed compile/runtime dependencies using path that matches the copied dependency folder -->
            <Embed-Dependency>*org.eclipse.scout.sdk.core*;scope=compile|runtime</Embed-Dependency>
            <Embed-Transitive>true</Embed-Transitive>
            <_exportcontents>
              org.eclipse.scout.sdk.core.*;version="${bundle.version}"
            </_exportcontents>

            <Embed-StripVersion>false</Embed-StripVersion>
            <Embed-StripGroup>true</Embed-StripGroup>
            <Embed-Directory>lib</Embed-Directory>

            <Eclipse-BundleShape>dir</Eclipse-BundleShape>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
