<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright (C) 2015, Obeo

   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
-->
<project>
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.eclipse.intent</groupId>
    <artifactId>org.eclipse.intent-parent</artifactId>
    <version>0.10.0-SNAPSHOT</version>
    <relativePath>../..</relativePath>
  </parent>

  <artifactId>org.eclipse.intent.product.tests</artifactId>
  <version>0.10.0-SNAPSHOT</version>
  <name>Intent Product Tests</name>

  <packaging>rcpttTest</packaging>


  <pluginRepositories>
    <pluginRepository>
      <id>rcptt-releases</id>
      <name>RCPTT Maven repository</name>
      <url>https://repo.eclipse.org/content/repositories/rcptt-releases/</url>
    </pluginRepository>
    <pluginRepository>
      <id>rcptt-snapshots</id>
      <name>RCPTT Maven Snapshots repository</name>
      <snapshots>
        <updatePolicy>always</updatePolicy>
      </snapshots>
      <url>https://repo.eclipse.org/content/repositories/rcptt-snapshots/</url>
    </pluginRepository>
  </pluginRepositories> 

  <properties>
    <rcptt-maven-version>2.2.0-SNAPSHOT</rcptt-maven-version>
  </properties> 
  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.rcptt</groupId>
        <artifactId>rcptt-maven-plugin</artifactId>
        <version>${rcptt-maven-version}</version>
        <extensions>true</extensions>
        <configuration>
          <aut>
            <groupId>org.eclipse.intent</groupId>
            <artifactId>org.eclipse.intent.product</artifactId>
            <version>0.10.0-SNAPSHOT</version>
            <injections>
              <injection>
                <site>${eclipse-rcptt-inject-site}</site>
                <features>
                   <feature>org.eclipse.sirius.runtime.feature.group</feature>
                   <feature>org.eclipse.sirius.runtime.ide.ui.feature.group</feature>
                   <feature>org.eclipse.emf.ecoretools.design.feature.group</feature>
                </features>      
              </injection>
            </injections>
          </aut>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
