<!--
    Copyright (c) 2009, 2016 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 v1.0
    which accompanies this distribution, and is available at
    http://www.eclipse.org/legal/epl-v10.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-server</artifactId>
	<version>2.2.0-SNAPSHOT</version>
	<packaging>rcpttTest</packaging>

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

	<parent>
		<groupId>com.xored.q7</groupId>
		<artifactId>q7tests-server</artifactId>
		<version>2.2.0-SNAPSHOT</version>
		<relativePath>../pom-server.xml</relativePath>
	</parent>

	<build>
		<plugins>
			<plugin>
				<groupId>${rcptt-maven-group}</groupId>
				<artifactId>${rcptt-server-maven-plugin}</artifactId>
				<version>${rcptt-maven-version}</version>
				<extensions>true</extensions>
				<configuration>
					<classifiers>
						<classifier>win32.win32.x86</classifier>
						<!-- <classifier>linux.gtk.x86</classifier> -->
					</classifiers>
					<aut>
						<uri>http://maven.xored.com/nexus/content/repositories/thirdparty/eclipse/sdk/3.7.0/sdk-3.7.0-[classifier].[ext]</uri>
						<ignoreOtherInjections>true</ignoreOtherInjections>
						<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/runtime-site</site>
							</injection>
							<injection>
								<site>${q7URL}/artifact/shared/IDE-update-site</site>
							</injection>
						</injections>
					</aut>
					<q7server>${q7Server}</q7server>
					<q7client>
						<version>${q7-cloud-version}</version>
                        <clientId>${clientId}</clientId>
                        <clientSecret>${clientSecret}</clientSecret>
                        <organization>${organization}</organization>
					</q7client>
					<testOptions>
						<execTimeout>7200</execTimeout>
						<autStartupTimeout>300</autStartupTimeout>
						<launchingKillAutOnConnectError>true</launchingKillAutOnConnectError>
					</testOptions>
					<args>
						<arg>-licenseUrl</arg>
						<arg>http://licensing.xored.com/pool/04fb850c-d95d-eec0-76f9-12313b043cf6</arg>
					</args>

					<skipTags>
						<skipTag>selfAUT</skipTag>
						<skipTag>skipExecution</skipTag>
					</skipTags>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>
