<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012, 2015 Eclipse Foundation and others.
  All rights reserved. This program and the accompanying materials
  are made available under the terms of the Eclipse Distribution License v1.0
  which accompanies this distribution, and is available at
  http://www.eclipse.org/org/documents/edl-v10.php
 
  Contributors:
     Igor Fedorenko - initial implementation
     Lars Vogel <Lars.Vogel@vogella.com> - Bug 471835
-->
<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>

  <parent>
    <groupId>org.eclipse</groupId>
    <artifactId>eclipse-platform-parent</artifactId>
    <version>4.8.0-SNAPSHOT</version>
    <relativePath>../eclipse-platform-parent</relativePath>
  </parent>

  <groupId>eclipse.platform.runtime</groupId>
  <artifactId>eclipse.platform.runtime</artifactId>
  <version>4.8.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <properties>
    <tycho.scmUrl>scm:git:git://git.eclipse.org/gitroot/platform/eclipse.platform.runtime.git</tycho.scmUrl>
  </properties>

  <!-- 
    To build individual bundles, we specify a repository where to find parent pom, 
    in case it is not in local maven cache already
    and that parent pom also has fuller individual-bundle profile 
    defined that is combined with this one. --> 
  <profiles>
    <profile>
      <id>build-individual-bundles</id>
      <repositories>
        <repository>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
          <id>eclipse-hosted</id>
          <url>https://repo.eclipse.org/content/repositories/eclipse/</url>
        </repository>
      </repositories>
      <build>
        <plugins>
          <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-compiler-plugin</artifactId>
            <version>${tycho.version}</version>
             <configuration>
 	       <!-- Do not use useProjectSettings; it'll always override -nowarn -->
              <compilerArgs>
               <arg>-properties</arg>
               <arg>${project.basedir}/.settings/org.eclipse.jdt.core.prefs</arg>
               <arg>-nowarn</arg>
              </compilerArgs>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <modules>
    <module>bundles/org.eclipse.core.contenttype</module>
    <module>bundles/org.eclipse.core.expressions</module>
    <module>bundles/org.eclipse.core.jobs</module>
    <module>bundles/org.eclipse.core.runtime</module>
    <module>bundles/org.eclipse.e4.core.contexts</module>
    <module>bundles/org.eclipse.e4.core.di.annotations</module>
    <module>bundles/org.eclipse.e4.core.di</module>
    <module>bundles/org.eclipse.e4.core.di.extensions</module>
    <module>bundles/org.eclipse.e4.core.di.extensions.supplier</module>
    <module>bundles/org.eclipse.e4.core.services</module>

    <module>features/org.eclipse.core.runtime.feature</module>

    <module>tests</module>
  </modules>
</project>
