<!--
    Copyright (c) 2009, 2019 Xored Software Inc and others.
    All rights reserved. This program and the accompanying materials
    are made available under the terms of the Eclipse Public License v2.0
    which accompanies this distribution, and is available at
    https://www.eclipse.org/legal/epl-v20.html
     
    Contributors:
    	Xored Software Inc - initial API and implementation and/or initial documentation
 -->
<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>

	<artifactId>q7-module-ide-tests</artifactId>
	<packaging>rcpttTest</packaging>

	<dependencies>
		<dependency>
			<groupId>com.xored.q7</groupId>
			<artifactId>q7contexts.shared</artifactId>
			<version>2.5.1-SNAPSHOT</version>
			<type>rcpttTest</type>
		</dependency>
	</dependencies>

	<parent>
		<groupId>org.eclipse.rcptt.tests</groupId>
		<artifactId>base</artifactId>
		<version>2.5.1-SNAPSHOT</version>
		<relativePath>../pom-base.xml</relativePath>
	</parent>

	<build>
		<plugins>
			<plugin>
				<groupId>${rcptt-maven-group}</groupId>
				<artifactId>${rcptt-maven-plugin}</artifactId>
				<version>${rcptt-maven-version}</version>
				<extensions>true</extensions>
				<configuration>
					<aut>
						<artifactId>sdk</artifactId>
						<groupId>eclipse</groupId>
						<version>3.7.0</version>
						<injections>

							<injection>
								<site>http://download.xored.com/mirrors/q7mirror/</site>
								<features>
									<feature>org.eclipse.emf.transaction.feature.group</feature>
									<feature>org.eclipse.emf.validation.feature.group</feature>
									<feature>org.eclipse.emf.ecore.feature.group</feature>
									<feature>org.eclipse.emf.common.feature.group</feature>
									<feature>org.eclipse.emf.workspace.feature.group</feature>
									<feature>org.eclipse.emf.edit.ui.feature.group</feature>
									<feature>org.eclipse.emf.edit.feature.group</feature>
									<feature>org.eclipse.emf.databinding.feature.group</feature>
									<feature>org.eclipse.emf.common.ui.feature.group</feature>
								</features>
							</injection>

							<injection>
								<site>${q7URL}/artifact/shared/repository</site>
								<features>
									<feature>com.google.libs.feature.group</feature>

									<feature>com.xored.tesla.ecl.feature.group</feature>
									<feature>org.eclipse.ecl.core.feature.group</feature>
									<feature>org.eclipse.ecl.ide.feature.group</feature>
									
									<feature>com.xored.q7.runner.feature.group</feature>
									<feature>com.xored.watson.feature.group</feature>
									<feature>com.xored.q7.platform.feature.group</feature>
									<feature>org.eclipse.ecl.server.feature.group</feature>
									
									<feature>com.xored.tesla.feature.group</feature>
									<feature>com.xored.q7.updates.feature.group</feature>
									
									<feature>com.google.libs.feature.group</feature>
								</features>
							</injection>

							<injection>
								<site>${q7URL}/artifact/shared/IDE-update-site</site>
							</injection>
						</injections>
						<args>
							<arg>-licenseUrl</arg>
							<arg>http://licensing.xored.com/pool/04fb850c-d95d-eec0-76f9-12313b043cf6</arg>
						</args>
					</aut>
					<runner>
						<version>${runner-version}</version>
					</runner>
					<testOptions>
						<execTimeout>3600</execTimeout>
					</testOptions>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>
