<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (C) 2011, 2012 EclipseSource 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:
     EclipseSource - initial 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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <name>RAP Runtime build</name>

  <groupId>org.eclipse.rap</groupId>
  <artifactId>org.eclipse.rap.runtime-parent</artifactId>
  <version>2.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <properties>
    <tycho-version>0.15.0</tycho-version>
    <signing-plugin-version>1.0.5</signing-plugin-version>
    <surefire-version>2.9</surefire-version>
    <junit-version>3.8.2</junit-version>
    <mockito-version>1.8.4</mockito-version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

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

  <modules>
    <!-- Runtime projects -->
    <module>../../bundles/org.eclipse.rap.rwt</module>
    <module>../../bundles/org.eclipse.rap.rwt.osgi</module>
    <module>../../bundles/org.eclipse.rap.demo</module>
    <module>../../bundles/org.eclipse.rap.demo.databinding</module>
    <module>../../bundles/org.eclipse.rap.design.example</module>
    <module>../../bundles/org.eclipse.rap.jface</module>
    <module>../../bundles/org.eclipse.rap.jface.databinding</module>
    <module>../../bundles/org.eclipse.rap.junit</module>
    <module>../../bundles/org.eclipse.rap.junit.runtime</module>
    <module>../../bundles/org.eclipse.rap.ui</module>
    <module>../../bundles/org.eclipse.rap.ui.cheatsheets</module>
    <module>../../bundles/org.eclipse.rap.ui.forms</module>
    <module>../../bundles/org.eclipse.rap.ui.views</module>
    <module>../../bundles/org.eclipse.rap.ui.workbench</module>
    <!-- Test projects -->
    <module>../../tests/org.eclipse.rap.rwt.testfixture</module>
    <module>../../tests/org.eclipse.rap.rwt.cluster.testfixture</module>
    <module>../../tests/org.eclipse.rap.rwt.test</module>
    <module>../../tests/org.eclipse.rap.rwt.osgi.test</module>
    <module>../../tests/org.eclipse.rap.rwt.themes.test</module>
    <module>../../tests/org.eclipse.rap.ui.forms.test</module>
    <!--
    <module>../../tests/org.eclipse.rap.rwt.cluster.test</module>
    <module>../../tests/org.eclipse.rap.rwt.cluster.testfixture.test</module>
    -->
    <!-- Packaging projects -->
    <module>../../features/org.eclipse.rap.feature</module>
    <module>repository</module>
  </modules>

  <repositories>
    <repository>
      <id>base-platform-repository</id>
      <layout>p2</layout>
      <!--
        TODO [rst]: Because of bug 348045, we cannot add the entire platform repository to the
                    target platform, try target definitions instead.
        -->
      <url>http://build.eclipse.org/rt/rap/base-platforms/2.0/M2/runtime-base</url>
    </repository>
    <repository>
      <id>extra-dependencies-repository</id>
      <layout>p2</layout>
      <url>http://build.eclipse.org/rt/rap/base-platforms/1.5/extra-dependencies</url>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>maven.eclipse.org</id>
      <url>http://maven.eclipse.org/nexus/content/repositories/milestone-indigo</url>
    </pluginRepository>
  </pluginRepositories>

  <build>
    <plugins>

      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-maven-plugin</artifactId>
        <version>${tycho-version}</version>
        <extensions>true</extensions>
      </plugin>

      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-packaging-plugin</artifactId>
        <version>${tycho-version}</version>
        <configuration>
          <format>yyyyMMdd-HHmm</format>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-source-plugin</artifactId>
        <version>${tycho-version}</version>
        <executions>
          <execution>
            <id>plugin-source</id>
            <goals>
              <goal>plugin-source</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.eclipse.dash.maven</groupId>
        <artifactId>eclipse-signing-maven-plugin</artifactId>
        <version>${signing-plugin-version}</version>
        <configuration>
          <signerInputDirectory>/home/data/httpd/download-staging.priv/rt/rap</signerInputDirectory>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire-version}</version>
        <executions>
          <execution>
            <id>test</id>
            <phase>test</phase>
            <configuration>
              <testClassesDirectory>${project.build.outputDirectory}</testClassesDirectory>
              <includes>
                <include>**/*_Test.java</include>
              </includes>
              <runOrder>random</runOrder>
            </configuration>
            <goals>
              <goal>test</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit-version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>${mockito-version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

</project>
