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

    <dependencies>
        <dependency>
		<groupId>org.eclipse.rcptt.tests</groupId>
        	<artifactId>q7contexts.shared-server</artifactId>
		<version>2.4.1-SNAPSHOT</version>
            <type>rcpttTest</type>
        </dependency>
    </dependencies>
	<parent>
		<groupId>org.eclipse.rcptt.tests</groupId>
		<artifactId>server</artifactId>
		<version>2.4.1-SNAPSHOT</version>
        <relativePath>../pom-server.xml</relativePath>
	</parent>
	
</project>
