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

  <groupId>eclipse.jdt.core</groupId>
  <artifactId>eclipse.jdt.core</artifactId>
  <version>4.17.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.core.formatterapp</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>
