<?xml version="1.0" encoding="UTF-8"?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.eclipse.rap</groupId>
    <artifactId>org.eclipse.rap.examples.parent.parent</artifactId>
    <version>3.16.0-SNAPSHOT</version>
    <relativePath>parent</relativePath>
  </parent>

  <artifactId>org.eclipse.rap.examples.parent</artifactId>
  <packaging>pom</packaging>

  <!--
    Two-stage parent pom to work around bug 348045 (equinox servletbridge extensionbundle).
    All settings are defined in the parent of this pom (example.parent.parent).
    This pom (example.parent) removes the problematic extension bundle and serves as parent for all
    modules. Only the feature and the product, which need the extension bundle, have derive from
    the top parent.
  -->

  <build>
    <plugins>

      <!-- Work around bug 348045 (servletbridge.extensionbundle) -->
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>target-platform-configuration</artifactId>
        <version>${tycho.version}</version>
        <configuration>
          <filters>
            <filter>
              <type>java-package</type>
              <id>javax.servlet</id>
              <restrictTo>
                <type>eclipse-plugin</type>
                <id>javax.servlet</id>
              </restrictTo>
            </filter>
          </filters>
        </configuration>
      </plugin>

    </plugins>
  </build>

</project>
