<!--
    Copyright (c) 2009, 2020 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.2-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>
    <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</id>
      <layout>p2</layout>
      <url>http://download.eclipse.org/eclipse/updates/4.15</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>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>
