<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012, 2017 Eclipse Foundation and others.
  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>tests-pom</artifactId>
    <groupId>eclipse.platform.ua</groupId>
    <version>4.11.0-SNAPSHOT</version>
    <relativePath>../tests-pom/</relativePath>
  </parent>
  <groupId>org.eclipse.ua</groupId>
  <artifactId>org.eclipse.ua.tests.doc</artifactId>
  <version>1.0.500-SNAPSHOT</version>
  <packaging>eclipse-test-plugin</packaging>

  <properties>
    <testSuite>${project.artifactId}</testSuite>
    <testClass>org.eclipse.ua.tests.doc.AllTests</testClass>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>target-platform-configuration</artifactId>
        <configuration>
          <dependency-resolution>
	          <extraRequirements>
	            <requirement>
	              <type>eclipse-feature</type>
	              <id>org.eclipse.jdt</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	            <requirement>
	              <type>eclipse-feature</type>
	              <id>org.eclipse.pde</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	            <requirement>
	              <type>eclipse-feature</type>
	              <id>org.eclipse.equinox.core.feature</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	            <requirement>
	              <type>eclipse-feature</type>
	              <id>org.eclipse.equinox.server.jetty</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	            <requirement>
	              <type>eclipse-plugin</type>
	              <id>org.eclipse.help.ui</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	            <requirement>
	              <type>eclipse-plugin</type>
	              <id>org.eclipse.ui.monitoring</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	            <requirement>
	              <type>eclipse-plugin</type>
	              <id>org.eclipse.ui.browser</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	            <requirement>
	              <type>eclipse-plugin</type>
	              <id>org.eclipse.ui.intro.quicklinks</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	            <requirement>
	              <type>eclipse-plugin</type>
	              <id>org.eclipse.ui.intro.universal</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	            <requirement>
	              <type>eclipse-plugin</type>
	              <id>org.eclipse.jsch.ui</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	             <requirement>
	              <type>eclipse-plugin</type>
	              <id>org.eclipse.core.databinding.beans</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	            <requirement>
	              <type>eclipse-plugin</type>
	              <id>org.eclipse.jdt.doc.isv</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	            <requirement>
	              <type>eclipse-plugin</type>
	              <id>org.eclipse.jdt.doc.user</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	            <requirement>
	              <type>eclipse-plugin</type>
	              <id>org.eclipse.pde.doc.user</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	            <requirement>
	              <type>eclipse-plugin</type>
	              <id>org.eclipse.platform.doc.isv</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	            <requirement>
	              <type>eclipse-plugin</type>
	              <id>org.eclipse.platform.doc.user</id>
	              <versionRange>0.0.0</versionRange>
	            </requirement>
	          </extraRequirements>
	      </dependency-resolution>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
