<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012, 2016 Eclipse Foundation.
  All rights reserved. This program and the accompanying materials
  are made available under the terms of the Eclipse Distribution License v1.0
  which accompanies this distribution, and is available at
  http://www.eclipse.org/org/documents/edl-v10.php
 
  Contributors:
     Igor Fedorenko - initial 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>
    <artifactId>rt.equinox.framework</artifactId>
    <groupId>org.eclipse.equinox.framework</groupId>
    <version>4.7.2-SNAPSHOT</version>
    <relativePath>../../</relativePath>
  </parent>
  <groupId>org.eclipse.osgi</groupId>
  <artifactId>org.eclipse.osgi.tests</artifactId>
  <version>3.12.51-SNAPSHOT</version>
  <packaging>eclipse-test-plugin</packaging>

  <properties>
    <defaultSigning-excludeInnerJars>true</defaultSigning-excludeInnerJars>
    <code.ignoredWarnings>${tests.ignoredWarnings}</code.ignoredWarnings>
    <testSuite>${project.artifactId}</testSuite>
    <testClass>org.eclipse.osgi.tests.AutomatedTests</testClass>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-surefire-plugin</artifactId>
        <version>${tycho.version}</version>
        <configuration>
          <argLine>-Xmx128m -Dosgi.framework.extensions=reference:file:${basedir}/../org.eclipse.osgi.compatibility.plugins/target/org.eclipse.osgi.compatibility.plugins-1.1.0-SNAPSHOT.jar</argLine>
          <dependencies>
            <dependency>
              <type>p2-installable-unit</type>
              <artifactId>org.eclipse.equinox.event</artifactId>
            </dependency>
          </dependencies>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>target-platform-configuration</artifactId>
        <version>${tycho.version}</version>
        <configuration>
          <dependency-resolution>
            <extraRequirements>
              <requirement>
                <id>org.eclipse.update.configurator</id>
                <type>p2-installable-unit</type>
                <versionRange>0.0.0</versionRange>
              </requirement>
              <requirement>
                <id>org.eclipse.osgi.compatibility.plugins</id>
                <type>p2-installable-unit</type>
                <versionRange>0.0.0</versionRange>
              </requirement>
              <requirement>
                <id>org.eclipse.osgi.compatibility.state</id>
                <type>p2-installable-unit</type>
                <versionRange>0.0.0</versionRange>
              </requirement>
              <requirement>
                <id>org.eclipse.jdt.junit.runtime</id>
                <type>p2-installable-unit</type>
                <versionRange>0.0.0</versionRange>
              </requirement>
              <requirement>
                <id>org.eclipse.jdt.junit4.runtime</id>
                <type>p2-installable-unit</type>
                <versionRange>0.0.0</versionRange>
              </requirement>
              <requirement>
                <id>org.eclipse.pde.junit.runtime</id>
                <type>p2-installable-unit</type>
                <versionRange>0.0.0</versionRange>
              </requirement>
            </extraRequirements>
          </dependency-resolution>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
