<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2011, 2018 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:
    Stefan Dimov (SAP) - Initial Implementation
    Petya Sabeva (SAP) - Initial Implementation
    Thanh Ha (Eclipse Foundation) - CBI Webtools 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>
		<groupId>org.eclipse.webtools.dali</groupId>
		<artifactId>org.eclipse.webtools.dali</artifactId>
		<version>3.4.0-SNAPSHOT</version>
        <relativePath>../../../</relativePath>
	</parent>
	
    <groupId>org.eclipse.webtools.dali</groupId>
	<artifactId>org.eclipse.jpt.jpadiagrameditor.ui.tests</artifactId>
    <version>1.2.102-SNAPSHOT</version>
	<packaging>eclipse-test-plugin</packaging>
	<name>JPA Diagram Editor Test Plug-in</name>

    <properties>
        <org.eclipse.jpt.jpa.jar>${project.basedir}/lib/javax.persistence_2.0.4.v201112161009.jar</org.eclipse.jpt.jpa.jar>
    </properties>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.eclipse.tycho</groupId>
				<artifactId>tycho-surefire-plugin</artifactId>
				<version>${tycho.version}</version>
				<configuration>
					<testSuite>org.eclipse.jpt.jpadiagrameditor.ui.tests</testSuite>
					<testClass>org.eclipse.jpt.jpadiagrameditor.ui.tests.internal.AllJpaEditorTests</testClass>
					<useUIHarness>true</useUIHarness>
					<useUIThread>true</useUIThread>
					<systemProperties combine.children="append">
						<org.eclipse.jpt.jpa.jar>${org.eclipse.jpt.jpa.jar}</org.eclipse.jpt.jpa.jar>
					</systemProperties>
					<argLine>-Xms128m -Xmx512m -XX:MaxPermSize=256m</argLine>
					<product>org.eclipse.sdk.ide</product>
					<application>org.eclipse.ui.ide.workbench</application>
					<dependencies>
						<dependency>
							<type>p2-installable-unit</type>
							<artifactId>javax.persistence</artifactId>
							<version>0.0.0</version>
						</dependency>
						<dependency>
							<type>p2-installable-unit</type>
							<artifactId>org.eclipse.sdk.ide</artifactId>
							<version>0.0.0</version>
						</dependency>
					</dependencies>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>