<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2007, 2013 THALES GLOBAL SERVICES
  This program and the accompanying materials
  are made available under the terms of the Eclipse Public License 2.0
  which accompanies this distribution, and is available at
  https://www.eclipse.org/legal/epl-2.0/

  SPDX-License-Identifier: EPL-2.0

  Contributors:
       Obeo - Initial API and implementation
-->
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <prerequisites>
    <maven>3.0</maven>
  </prerequisites>

  <groupId>org.eclipse.sirius</groupId>
  <artifactId>org.eclipse.sirius.releng.targets</artifactId>
  <version>6.3.5-SNAPSHOT</version>
  <packaging>pom</packaging>

  <licenses>
    <license>
      <name>Eclipse Public License 2.0</name>
      <comments>
	All rights reserved.

	This program and the accompanying materials are made
	available under the terms of the Eclipse Public License 2.0
	which accompanies this distribution, and is available at
	http://www.eclipse.org/legal/epl-v10.htm
      </comments>
    </license>
  </licenses>

  <properties>
    <tycho-version>1.4.0</tycho-version>
    <tycho-extras-version>1.4.0</tycho-extras-version>
    <targetPlatform.repository.p2>http://mbarbero.github.com/fr.obeo.releng.targetplatform/p2/</targetPlatform.repository.p2>
    <target.definition>baseline.targetplatform</target.definition>
  </properties>

  <build>
    <plugins>
      <plugin>
	<groupId>org.eclipse.tycho.extras</groupId>
	<artifactId>tycho-eclipserun-plugin</artifactId>
	<version>${tycho-extras-version}</version>
	<configuration>
	  <repositories>
	    <repository>
	      <id>mars</id>
	      <layout>p2</layout>
	      <url>http://download.eclipse.org/releases/mars</url>
	    </repository>
	    <repository>
	      <id>targetplatform</id>
	      <layout>p2</layout>
	      <url>${targetPlatform.repository.p2}</url>
	    </repository>
	  </repositories>
	  <appArgLine>-consoleLog -application fr.obeo.releng.targetplatform.targetPlatform.converter ${target.definition}</appArgLine>
	  <!-- Set dependencies to launch the application -->
	  <dependencies>
	    <dependency>
	      <artifactId>fr.obeo.releng.targetplatform-feature</artifactId>
	      <type>eclipse-feature</type>
	    </dependency>
	    <dependency>
	      <artifactId>org.eclipse.equinox.p2.sdk</artifactId>
	      <type>eclipse-feature</type>
	    </dependency>
	  </dependencies>
	</configuration>
	<executions>
	  <execution>
	    <goals>
	      <goal>eclipse-run</goal>
	    </goals>
	    <!-- The phase validate rebuild the targetplatform before to compile/test... 
		 @see https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html -->
	    <phase>validate</phase>
	  </execution>
	</executions>
      </plugin>
    </plugins>
  </build>
</project>
