<!--
    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 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>server-mars</artifactId>
	<packaging>rcpttTest</packaging>

	<properties>
		<q7Server>http://192.168.2.64:8902</q7Server>
		<clientId>komaz</clientId>
		<clientSecret>05fe7461c607c33229772d402505601016a7d0ea</clientSecret>
		<organization>xored</organization>
	</properties>

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

	<build>
		<plugins>
			<plugin>
				<groupId>${ci-maven-group}</groupId>
				<artifactId>${ci-server-maven-plugin}</artifactId>
				<version>${ci-maven-version}</version>
				<extensions>true</extensions>
				<configuration>
					<classifiers>
						<classifier>win32.win32.x86</classifier>
						<!-- <classifier>linux.gtk.x86</classifier> -->
					</classifiers>
					<aut>
						<uri>${autURL}</uri>
						<ignoreOtherInjections>true</ignoreOtherInjections>
						<injections>
							<injection>
								<site>${runtimeRepository}</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>

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

	<pluginRepositories>
		<pluginRepository>
			<snapshots>
				<updatePolicy>always</updatePolicy>
			</snapshots>
			<id>xored</id>
			<name>Xored Maven repository</name>
			<url>http://maven.xored.com/nexus/content/repositories/ci4rcptt-snapshots/</url>
		</pluginRepository>
		<pluginRepository>
			<id>xored-releases</id>
			<name>Xored Maven repository</name>
			<url>http://maven.xored.com/nexus/content/repositories/ci4rcptt-releases/</url>
		</pluginRepository>
	</pluginRepositories>

	<repositories>
		<repository>
			<id>xored</id>
			<name>Xored Maven repository</name>
			<url>http://maven.xored.com/nexus/content/repositories/releases/</url>
		</repository>
		<repository>
			<id>thirdparty</id>
			<name>Maven repo with eclipses</name>
			<url>http://maven.xored.com/nexus/content/repositories/thirdparty/</url>
		</repository>

	</repositories>
</project>
