<?xml version="1.0" encoding="UTF-8"?>
<!--
    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>
  <parent>
    <artifactId>tesla</artifactId>
    <groupId>org.eclipse.rcptt.tesla</groupId>
    <version>2.5.0-SNAPSHOT</version>
  </parent>
  <artifactId>org.eclipse.rcptt.tesla.recording.swt</artifactId>
  <packaging>eclipse-plugin</packaging>
  <dependencies>
    <dependency>
      <groupId>org.eclipse.rcptt.tesla</groupId>
      <artifactId>org.eclipse.rcptt.tesla.swt.fragment</artifactId>
      <version>2.5.0-SNAPSHOT</version>
      <type>eclipse-plugin</type>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>${tycho-groupid}</groupId>
        <artifactId>tycho-compiler-plugin</artifactId>
        <dependencies>
          <dependency>
            <groupId>org.eclipse.rcptt.tesla</groupId>
            <artifactId>org.eclipse.rcptt.tesla.swt.fragment</artifactId>
            <version>2.5.0-SNAPSHOT</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <groupId>${tycho-groupid}</groupId>
        <artifactId>target-platform-configuration</artifactId>
        <configuration>
           <dependency-resolution>
              <extraRequirements>
                 <requirement>
                    <type>eclipse-plugin</type>
                    <id>org.eclipse.rcptt.tesla.swt.fragment</id>
                    <versionRange>0.0.0</versionRange>
                 </requirement>
              </extraRequirements>
           </dependency-resolution>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
