<!--
    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
 -->
<!-- <?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>
    <version>2.4.3-SNAPSHOT</version>
    <artifactId>core</artifactId>
    <relativePath>../core/pom.xml</relativePath>
  </parent>
  <modules>
    <module>../../runtime/updates/org.eclipse.rcptt.updates-feature</module>
    <module>../../modules/nebula</module>
    <module>../../launching</module>
    <module>../../modules/testrail</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>2019-06-updates</id>
      <layout>p2</layout>
      <url>http://download.eclipse.org/eclipse/updates/4.12milestones</url>
    </repository>
    <repository>
      <id>2019-03</id>
      <layout>p2</layout>
      <url>http://download.eclipse.org/releases/2019-03</url>
    </repository>
    <repository>
      <id>orbit</id>
      <layout>p2</layout>
      <url>http://download.eclipse.org/tools/orbit/downloads/drops/R20190226160451/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>
