<?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>2.2.0-SNAPSHOT</version>
    <relativePath>../../parent/parent</relativePath>
  </parent>

  <artifactId>org.eclipse.rap.examples.controlsdemo.product</artifactId>
  <packaging>eclipse-repository</packaging>

  <properties>
    <war-filename>controlsdemo</war-filename>
  </properties>

  <build>
    <plugins>
      <!-- Configure the p2 director -->
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-p2-director-plugin</artifactId>
        <version>${tycho-version}</version>
        <executions>
          <execution>
            <id>materialize-products</id>
            <goals>
              <goal>materialize-products</goal>
            </goals>
          </execution>
          <execution>
            <id>archive-products</id>
            <goals>
              <goal>archive-products</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Remove javax.servlet from the bundles.info -->
      <plugin>
        <groupId>com.google.code.maven-replacer-plugin</groupId>
        <artifactId>maven-replacer-plugin</artifactId>
        <version>${replacer-version}</version>
        <executions>
          <execution>
            <phase>verify</phase>
            <goals>
              <goal>replace</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <file>target/products/${project.artifactId}/linux/gtk/x86_64/configuration/config.ini</file>
          <replacements>
            <replacement>
              <token>osgi.bundles=</token>
              <value>osgi.bundles=org.eclipse.equinox.servletbridge.extensionbundle,</value>
            </replacement>
            <replacement>
              <token>reference\\:file\\:javax.servlet.*?jar@4,</token>
              <value></value>
            </replacement>
          </replacements>
          <regexFlags>
            <regexFlag>CASE_INSENSITIVE</regexFlag>
            <regexFlag>UNIX_LINES</regexFlag>
          </regexFlags>
        </configuration>
      </plugin>

      <!-- Configure the assembly plugin to zip the war file -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>${assembly-version}</version>
        <configuration>
          <descriptors>
            <descriptor>assembly.xml</descriptor>
          </descriptors>
          <!-- Configure the war's filename -->
          <finalName>${war-filename}</finalName>
          <appendAssemblyId>false</appendAssemblyId>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>verify</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

</project>
