<!--
    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 v2.0
    which accompanies this distribution, and is available at
    https://www.eclipse.org/legal/epl-v20.html

    Contributors:
    	Xored Software Inc - initial API and implementation and/or initial documentation
 -->
<!-- <?xml version="1.0" encoding="UTF-8"?> -->
<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>ide</artifactId>
  <packaging>pom</packaging>
  <parent>
    <groupId>org.eclipse.rcptt</groupId>
    <artifactId>rcptt.releng</artifactId>
    <version>2.5.1-SNAPSHOT</version>
  </parent>
  <modules>
    <module>../../runtime/updates/org.eclipse.rcptt.updates-feature</module>
    <module>../../modules/nebula</module>
    <module>../../launching</module>
    <module>../../modules/testrail</module>
    <module>../../modules/zephyr</module>
    <module>../../rcp</module>
    <module>../../testing</module>

    <module>../../repository/full</module>
  </modules>
  <build>
    <plugins>
    </plugins>
  </build>
  <properties>
    <buildUrl>file:/${user.dir}</buildUrl>
    <rcpttRuntimeRepo>${buildUrl}/runtime/org.eclipse.rcptt.runtime-updatesite/target/repository/</rcpttRuntimeRepo>
    <e3xRepository>${buildUrl}/repository/e3x/target/repository</e3xRepository>
    <e4xRepository>${buildUrl}/repository/e4x/target/repository</e4xRepository>
    <coreRepository>${buildUrl}/repository/core/target/repository</coreRepository>
    <rcpttExternalDepencenciesRepository>${buildUrl}/repository/dependencies/target/repository</rcpttExternalDepencenciesRepository>
  </properties>
  <repositories>
    <repository>
      <id>2020-03-milestones</id>
      <layout>p2</layout>
      <url>http://download.eclipse.org/eclipse/updates/4.15milestones</url>
    </repository>
    <repository>
      <id>2020-03</id>
      <layout>p2</layout>
      <url>http://download.eclipse.org/releases/2020-03</url>
    </repository>
    <repository>
      <id>orbit</id>
      <layout>p2</layout>
      <url>https://download.eclipse.org/tools/orbit/downloads/drops/S20200219023850/repository/</url>
    </repository>
    <repository>
      <id>core</id>
      <layout>p2</layout>
      <url>${coreRepository}</url>
    </repository>
    <repository>
      <snapshots>
        <updatePolicy>always</updatePolicy>
      </snapshots>
      <id>e3x-ide</id>
      <layout>p2</layout>
      <url>${e3xRepository}</url>
    </repository>

    <repository>
      <snapshots>
        <updatePolicy>always</updatePolicy>
      </snapshots>
      <id>e4x-ide</id>
      <layout>p2</layout>
      <url>${e4xRepository}</url>
    </repository>
    <repository>
       <id>rcptt-external-dependencies</id>
       <layout>p2</layout>
       <url>${rcpttExternalDepencenciesRepository}</url>
    </repository>
  </repositories>
</project>
