<?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>6.0.300.RC2</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>6.0.300</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.core</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.jface.text*,
              !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.11,4)";visibility:=reexport,
              org.eclipse.core.resources;bundle-version="[3.10.0,4)";visibility:=reexport,
              org.eclipse.jdt.core;bundle-version="[3.11,4)";visibility:=reexport,
              org.eclipse.jface.text;bundle-version="[3.10.0,4)";visibility:=reexport,
              org.eclipse.m2e.maven.runtime;bundle-version="[1.6.0,2)";visibility:=reexport,
              org.eclipse.m2e.archetype.common;bundle-version="[1.6.0,2)";visibility:=reexport,
              org.eclipse.m2e.core;bundle-version="[1.6.0,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>
