<?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>
    <artifactId>org.eclipse.mylyn.incubator-parent</artifactId>
    <groupId>org.eclipse.mylyn.incubator</groupId>
    <version>3.11.0-SNAPSHOT</version>
  </parent>
  <artifactId>org.eclipse.mylyn.sandbox.tests</artifactId>
  <version>3.11.0-SNAPSHOT</version>
  <packaging>eclipse-test-plugin</packaging>
  <properties>
    <test.suite>${project.artifactId}.AllSandboxTests</test.suite>
  </properties>
  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-surefire-plugin</artifactId>
        <version>${tycho-version}</version>
        <configuration>
          <skip>${test.component.skip}</skip>
          <testSuite>${project.artifactId}</testSuite>
          <testClass>${test.suite}</testClass>
          <dependencies>
            <dependency>
              <type>p2-installable-unit</type>
              <artifactId>org.eclipse.sdk.feature.group</artifactId>
              <version>${platform-version}</version>
            </dependency>
            <dependency>
              <type>p2-installable-unit</type>
              <artifactId>org.eclipse.mylyn.sdk_feature.feature.group</artifactId>
              <version>0.0.0</version>
            </dependency>
          </dependencies>		  
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-source-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>
