<?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>7.1.0.003_Photon_M3</version>
    <relativePath>../org.eclipse.scout.sdk/pom.xml</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>7.1.0</bundle.version>
  </properties>

  <dependencies>
    <!-- Build Dependencies -->
    <dependency>
      <groupId>org.eclipse.scout.sdk</groupId>
      <artifactId>org.eclipse.scout.sdk.core</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.eclipse.scout.sdk.deps</groupId>
          <artifactId>ecj</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.sdk</groupId>
      <artifactId>org.eclipse.scout.sdk.core.s</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.eclipse.scout.sdk.deps</groupId>
          <artifactId>ecj</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <!-- Build Dependencies (Provided) -->
    <dependency>
      <groupId>org.eclipse.scout.sdk.deps</groupId>
      <artifactId>org.eclipse.jdt.launching</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.sdk.deps</groupId>
      <artifactId>org.eclipse.debug.core</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*,
              !org.eclipse.core.runtime*,
              !org.eclipse.core.resources*,
              !org.eclipse.jdt.core*,
              !org.eclipse.jdt.internal*,
              !org.eclipse.jdt.launching*,
              !org.eclipse.jface.text*,
              !javax.annotation.*,
              !org.codehaus.plexus*,
              !org.eclipse.text*,
              !org.eclipse.m2e.core*,
              !org.apache.maven.*,
              !org.eclipse.scout.sdk.core.*,
              !org.slf4j*,
              *
            </Import-Package>
            <Require-Bundle>
              org.eclipse.core.runtime;bundle-version="[3.12,4)";visibility:=reexport,
              org.eclipse.core.resources;bundle-version="[3.11,4)";visibility:=reexport,
              org.eclipse.jdt.core;bundle-version="[3.12,4)";visibility:=reexport,
              org.eclipse.jdt.launching;bundle-version="[3.8.100,4)";visibility:=reexport,
              org.eclipse.text;bundle-version="[3.6.0,4)";visibility:=reexport,
              org.eclipse.m2e.maven.runtime;bundle-version="[1.7,2)";visibility:=reexport,
              org.eclipse.m2e.archetype.common;bundle-version="[1.7,2)";visibility:=reexport,
              org.eclipse.m2e.core;bundle-version="[1.7,2)";visibility:=reexport
            </Require-Bundle>

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

            <!-- embed compile/runtime dependencies using path that matches the copied dependency folder -->
            <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
            <Embed-Transitive>false</Embed-Transitive>
            <_exportcontents>
              !org.apache.commons.*,
              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>
