<!--
    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>

  <modelVersion>4.0.0</modelVersion>
  <groupId>q7.recording</groupId> 
  <artifactId>q7.recording.tests.RCP.Browser</artifactId>
  <version>2.4.0-SNAPSHOT</version>
  <packaging>q7test</packaging>

<parent>
  <version>2.4.0-SNAPSHOT</version>
  <groupId>q7.recording</groupId> 
  <artifactId>q7.recording.tests</artifactId>
</parent>

<build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.rcptt</groupId>
        <artifactId>q7-maven-plugin</artifactId>
        <version>${q7-maven-version}</version>
        <extensions>true</extensions>
        <configuration>
        <aut>
  			<explicit>${q7-AUT-location}</explicit>
		<args>
        <arg>-licenseUrl</arg>
        <arg>http://licensing.xored.com/pool/04fb850c-d95d-eec0-76f9-12313b043cf6</arg>
        </args>
		
		</aut>
		<q7>
			<version>${q7-runner-version}</version>
		</q7>
		<projects>
            <project>${project.basedir}/../sikuli</project>
          </projects>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
