<?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>eclipse.platform</artifactId>
    <groupId>eclipse.platform</groupId>
    <version>4.22.0-SNAPSHOT</version>
    <relativePath>../../</relativePath>
  </parent>
  <groupId>org.eclipse.ant</groupId>
  <artifactId>org.eclipse.ant.tests.core</artifactId>
  <version>3.6.200-SNAPSHOT</version>
  <packaging>eclipse-test-plugin</packaging>
  <properties>
    <code.ignoredWarnings>${tests.ignoredWarnings}</code.ignoredWarnings>
  </properties>
  <build>
  	<plugins>
  	    <plugin>
			<groupId>org.eclipse.tycho</groupId>
			<artifactId>target-platform-configuration</artifactId>
			<configuration>
				<dependency-resolution>
					<extraRequirements>
						<requirement>
							<type>eclipse-plugin</type>
							<id>org.eclipse.pde.core</id>
							<versionRange>0.0.0</versionRange>
						</requirement>
					</extraRequirements>
				</dependency-resolution>
			</configuration>
		</plugin>
  		<plugin>
  			<groupId>org.eclipse.tycho</groupId>
  			<artifactId>tycho-surefire-plugin</artifactId>
			<configuration>
				<testClass>org.eclipse.ant.tests.core.AutomatedSuite</testClass>
				<testClassesDirectory>target/anttestscore.jar-classes</testClassesDirectory>
				<useUIHarness>true</useUIHarness>
				<useUIThread>true</useUIThread>
			</configuration>
  		</plugin>
  	</plugins>
  </build>
</project>
