<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012, 2016 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
-->
<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.12.0-SNAPSHOT</version>
    <relativePath>../eclipse-platform-parent</relativePath>
  </parent>

  <groupId>eclipse.jdt.core</groupId>
  <artifactId>eclipse.jdt.core</artifactId>
  <version>4.12.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <properties>
    <tycho.scmUrl>scm:git:git://git.eclipse.org/gitroot/jdt/eclipse.jdt.core.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>
    </profile>
  </profiles>

  <modules>
    <module>org.eclipse.jdt.annotation</module>
    <module>org.eclipse.jdt.annotation_v1</module>
    <module>org.eclipse.jdt.compiler.tool</module>
    <module>org.eclipse.jdt.core</module>
    <module>org.eclipse.jdt.compiler.tool.tests</module>
    <module>org.eclipse.jdt.core.tests.builder</module>
    <module>org.eclipse.jdt.core.tests.compiler</module>
    <module>org.eclipse.jdt.core.tests.model</module>
    <module>org.eclipse.jdt.core.tests.performance</module>
    <module>org.eclipse.jdt.apt.core</module>
    <module>org.eclipse.jdt.apt.pluggable.core</module>
    <module>org.eclipse.jdt.apt.ui</module>
    <module>org.eclipse.jdt.compiler.apt</module>
    <module>org.eclipse.jdt.apt.pluggable.tests</module>
    <module>org.eclipse.jdt.apt.tests</module>
    <module>org.eclipse.jdt.compiler.apt.tests</module>
  </modules>

  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>target-platform-configuration</artifactId>
        <configuration>
          <filters>
            <filter>
              <type>osgi-bundle</type>
              <id>org.eclipse.jdt.core.compiler.batch</id>
              <removeAll/>
            </filter>
          </filters>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
