<?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.8.0-SNAPSHOT</version>
    <relativePath>../tests-pom/</relativePath>
  </parent>
  <groupId>org.eclipse.ua</groupId>
  <artifactId>org.eclipse.ua.tests.doc</artifactId>
  <version>1.0.400-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>
