<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012, 2021 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
  https://www.eclipse.org/org/documents/edl-v10.php

  Contributors:
  Igor Fedorenko - initial implementation
  Thanh Ha - improvements and maintenance
  David Williams - improvements and maintenance
  Lars Vogel - Bug 442042
-->
<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>
  <groupId>org.eclipse</groupId>
  <artifactId>eclipse-platform-parent</artifactId>
  <version>4.20.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <!--
    See maven-enforcer-plugin configuration to actually break the build if
    run with older maven.
    prerequisites section is kept for now as even if it doesn't break the build, it
    is used by other plugins like versions-maven-plugin which check and warn
    for using plugins with older than they require Maven version.
    If version number changed in one place, be sure to change in the other.
  -->
  <prerequisites>
    <maven>3.6.3</maven>
  </prerequisites>
  <properties>
    <!-- As of Tycho 0.22, skipTests takes priority, if maven.test.skip also specified,
      with different value. See https://bugs.eclipse.org/442976.
      During production builds, we run with -DskipTests=true -->
    <skipTests>false</skipTests>
    <maven.build.timestamp.format>yyyyMMdd-HHmm</maven.build.timestamp.format>
    <macSigner.forceContinue>false</macSigner.forceContinue>
    <buildTimestamp>${maven.build.timestamp}</buildTimestamp>
    <buildType>I</buildType>
    <buildId>${buildType}${buildTimestamp}</buildId>
     <!--
      releaseName should match the yearly "release train" name.
      For example, "Mars", "Mars.1", "Luna SR2", etc.
      It will show up in "about box",
      such as Version: Mars (4.5), for main features.
      See bug 328139.
    -->
    <releaseName>2021-06</releaseName>
    <!--
      The releaseNumbers below, for SDK and Platform, might be
      thought of as the "marketing number" or "branding number",
      and in fact are used in the branding bundle of the corresponding products.
      In practice, the SDK number and Platform number are always the same,
      though in theory they would not always have to be ... so we'll use
      separate numbers. Also in practice, they are almost always the same as
      or nearly the same as the "product feature" numbers, but for example, for
      the initial release, some prefer we not use the trailing zero, but instead
      merely "4.5, instead of 4.5.0". And, hypothetically, there might be a time
      in the future when the platform for a new release was "merely service",
      but we'd still want the "marketing number" to be increased to reflect
      "a new yearly release".
    -->
    <releaseNumberSDK>4.20</releaseNumberSDK>
    <releaseNumberPlatform>4.20</releaseNumberPlatform>


	<!-- using released version (normal case)
	     when upgrading make sure you change pom-version-updater version in build-functions.shsource
    -->
    <tycho.version>2.3.0</tycho.version>

    <cbi-plugins.version>1.1.8-SNAPSHOT</cbi-plugins.version>
    <surefire.version>3.0.0-M5</surefire.version>

    <!--  
      The tycho-eclipserun-plugin will create its instance of Eclipse from this
      'eclipiserun-repo' repository, such as for computing .api-descriptions and
      generating API Tools reports.
    -->
    <eclipserun-repo>https://download.eclipse.org/eclipse/updates/4.20-I-builds/</eclipserun-repo>
    
    <comparator.repo>https://download.eclipse.org/eclipse/updates/4.20-I-builds</comparator.repo>

    <!--
      NOTE: this EMF and ECF URL must match exactly what is in the eclipse-sdk-prereqs.target file.
      We use it (the EMF repo and ECF repo) not only for resolving pre-reqs during the build, but also in 'repository' POM for mirroring
      a copy of the EMF features and ECF features into our own repository. This is required since we merely "require" EMF (not "include"
      it).
      And, of course, in the PDE target file, the URL is expected to be the actual URL, not a variable.
    -->
    <emf-repo.url>https://download.eclipse.org/modeling/emf/emf/builds/release/2.25</emf-repo.url>

    <ecf-repo.url>https://download.eclipse.org/rt/ecf/3.14.20/site.p2/3.14.20.v20210328-0449/</ecf-repo.url>

    <!-- only used when Tycho snapshot repo is enabled in <pluginRepositories> further down -->
    <tycho-snapshot-repo.url>https://repo.eclipse.org/content/repositories/tycho-snapshots/</tycho-snapshot-repo.url>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <cbi-jdt-repo.url>https://repo.eclipse.org/content/repositories/eclipse-staging/</cbi-jdt-repo.url>
    <cbi-ecj-version>3.26.0.v20210317-0507</cbi-ecj-version>

    <!--
      Production bundles are produced by ignoring the compiler warnings specified
      by ${code.ignoredWarnings} (see further down).
      Good citizens don't override those default settings for their production bundles.
    -->
    <code.ignoredWarnings>-warn:-deprecation,unavoidableGenericProblems,warningToken</code.ignoredWarnings>

    <!--
      Test bundles may override the list of ignored warnings by setting this at the top of their pom.xml:
      <properties>
      <code.ignoredWarnings>${tests.ignoredWarnings}</code.ignoredWarnings>
      </properties>
      Good citizens use those default settings for their test bundles.
    -->
    <tests.ignoredWarnings>-warn:-deprecation,raw,unchecked,discouraged,warningToken</tests.ignoredWarnings>

    <!--
      repo for released versions of CBI. Note, we intentionally use as specific a repo as possible.
      See bug 471835.
    -->
    <eclipse-repo.url>https://repo.eclipse.org/content/repositories/cbi/</eclipse-repo.url>
    <cbi-snapshots-repo.url>https://repo.eclipse.org/content/repositories/cbi-snapshots/</cbi-snapshots-repo.url>

    <cbi-releases-repo.url>https://repo.eclipse.org/content/repositories/cbi-releases/</cbi-releases-repo.url>


    <!--
      This eclipse-p2-repo.url is specifically for the build-individual-bundles profile.
      See that profile for longer comment.
    -->
    <eclipse-p2-repo.url>This_URL_set_in_build-individual-bundles_profile</eclipse-p2-repo.url>

    <!--
      If configuration is not specified at all, in signing plugin, the default
      is 'false' (do not exclude inner jars, that is inner jars are signed).
    -->
    <defaultSigning-excludeInnerJars>false</defaultSigning-excludeInnerJars>

    <!--
      Valid options: error, warning, and ignore
      jgit.dirtyWorkingTree checking was added as of Tycho 0.19.0
      see: https://bugs.eclipse.org/419030
    -->
    <jgit.dirtyWorkingTree-platformDefault>ignore</jgit.dirtyWorkingTree-platformDefault>

    <qualifier.format>'v'yyyyMMdd-HHmm</qualifier.format>

    <compare-version-with-baselines.skip>true</compare-version-with-baselines.skip>
    <previous-release.baseline>https://download.eclipse.org/eclipse/updates/4.19/R-4.19-202103031800/</previous-release.baseline>

    <!--
      Declaration of properties that contribute to the arg line for the tycho-surefire-plugin.
      The properties are declared empty by default and are overridden by automatic activation
      of the profiles 'macos' and 'jdk9-or-newer' or specific configuration in modules.
    -->
    <!-- any additional surefire args; to be defined by a test-plugin -->
    <surefire.testArgLine></surefire.testArgLine>
    <!-- platform/OS specific JVM args -->
    <surefire.platformSystemProperties></surefire.platformSystemProperties>
    <!-- properties related to Java modules on Java 9+ -->
    <surefire.moduleProperties></surefire.moduleProperties>
    <!-- system specific JVM args; if needed provided by system properties to the build command -->
    <surefire.systemProperties></surefire.systemProperties>
    <java.version>11</java.version>
  </properties>

  <organization>
    <name>Eclipse Foundation</name>
    <url>https://www.eclipse.org/</url>
  </organization>

  <issueManagement>
    <system>Bugzilla</system>
    <url>https://bugs.eclipse.org/bugs/</url>
  </issueManagement>

  <distributionManagement>
    <repository>
      <id>repo.eclipse.org</id>
      <name>Eclipse Repository - Releases</name>
      <url>https://repo.eclipse.org/content/repositories/eclipse-releases/</url>
    </repository>
    <snapshotRepository>
      <id>repo.eclipse.org</id>
      <name>Eclipse Repository - Snapshots</name>
      <url>https://repo.eclipse.org/content/repositories/eclipse-snapshots/</url>
    </snapshotRepository>
  </distributionManagement>
  <pluginRepositories>

    <!-- Released Tycho versions are available on maven central, which is now mirrored to Eclipse.org.
         The tycho-snapshot-repo is only needed when using snapshots. -->
    <pluginRepository>
      <id>tycho-snapshots</id>
      <url>${tycho-snapshot-repo.url}</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>

    <pluginRepository>
      <id>cbi-jdt</id>
      <url>${cbi-jdt-repo.url}</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
    <pluginRepository>
      <id>cbi-snapshots</id>
      <url>${cbi-snapshots-repo.url}</url>
      <snapshots>
      <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
    <pluginRepository>
      <id>cbi-releases</id>
      <url>${cbi-releases-repo.url}</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
    <pluginRepository>
      <id>eclipse</id>
      <url>${eclipse-repo.url}</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>
  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-maven-plugin</artifactId>
        <version>${tycho.version}</version>
        <extensions>true</extensions>
      </plugin>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>target-platform-configuration</artifactId>
        <configuration>
          <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=453757
            <resolveWithExecutionEnvironmentConstraints>false</resolveWithExecutionEnvironmentConstraints>
          -->
          <target>
            <artifact>
              <groupId>org.eclipse</groupId>
              <artifactId>eclipse-sdk-prereqs</artifactId>
              <version>4.20.0-SNAPSHOT</version>
            </artifact>
          </target>
          <environments>
            <environment>
              <os>linux</os>
              <ws>gtk</ws>
              <arch>x86_64</arch>
            </environment>
            <environment>
              <os>linux</os>
              <ws>gtk</ws>
              <arch>ppc64le</arch>
            </environment>
             <environment>
              <os>linux</os>
              <ws>gtk</ws>
              <arch>aarch64</arch>
            </environment>
            <environment>
              <os>win32</os>
              <ws>win32</ws>
              <arch>x86_64</arch>
            </environment>
            <environment>
              <os>macosx</os>
              <ws>cocoa</ws>
              <arch>x86_64</arch>
            </environment>
            <environment>
              <os>macosx</os>
              <ws>cocoa</ws>
              <arch>arm64</arch>
            </environment>
          </environments>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-source-plugin</artifactId>
        <configuration>
          <archive>
            <addMavenDescriptor>false</addMavenDescriptor>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>plugin-source</id>
            <goals>
              <goal>plugin-source</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>filter-resources</id>
            <goals>
              <goal>resources</goal>
            </goals>
            <phase>process-resources</phase>
            <configuration>
              <outputDirectory>${project.build.directory}/resources</outputDirectory>
              <escapeString>\</escapeString>
            </configuration>
          </execution>
          <execution>
            <id>saveproperties</id>
            <configuration>
              <outputDirectory>${project.build.directory}</outputDirectory>
              <overwrite>true</overwrite>
              <resources>
                <resource>
                  <directory>saveproperties</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>
            </configuration>
            <phase>validate</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <!--
          This maven-enforcer-plugin configuration to actually break the build if
          run with older maven.
          prerequisites section is kept for now as even if it doesn't break the build, it
          is used by other plugins like versions-maven-plugin which check and warn
          for using plugins with older than they require Maven version.
          If version number changed in one place, be sure to change in the other.
        -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0-M3</version>
        <executions>
          <execution>
            <id>enforce-maven</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>3.5.4</version>
                </requireMavenVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
       <groupId>org.eclipse.tycho.extras</groupId>
       <artifactId>tycho-p2-extras-plugin</artifactId>
       <version>${tycho.version}</version>
       <executions>
         <execution> <!-- Checks versions are properly bumped from one stream to the other -->
           <id>compare-attached-artifacts-with-release</id>
           <goals>
             <goal>compare-version-with-baselines</goal>
           </goals>
           <configuration>
             <skip>${compare-version-with-baselines.skip}</skip>
             <baselines>
               <baseline>${previous-release.baseline}</baseline>
             </baselines>
             <comparator>zip</comparator>
           </configuration>
         </execution>
       </executions>
     </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.eclipse.tycho.extras</groupId>
          <artifactId>tycho-eclipserun-plugin</artifactId>
          <!-- this is actually present in any 0.14+ version -->
          <version>${tycho.version}</version>
          <configuration>
            <executionEnvironment>JavaSE-11</executionEnvironment>
            <repositories>
              <repository>
                <id>eclipse</id>
                <layout>p2</layout>
                <url>${eclipserun-repo}</url>
              </repository>
            </repositories>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
         <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${surefire.version}</version>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>target-platform-configuration</artifactId>
          <version>${tycho.version}</version>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-compiler-plugin</artifactId>
          <version>${tycho.version}</version>
          <dependencies>
            <dependency>
              <groupId>org.eclipse.jdt</groupId>
              <artifactId>ecj</artifactId>
              <version>${cbi-ecj-version}</version>
            </dependency>
          </dependencies>
          <configuration>
            <compilerArgs>
              <args>${code.ignoredWarnings}</args>
              <args>-verbose</args>
              <args>-inlineJSR</args>
              <args>-enableJavadoc</args>
              <args>-encoding</args>
              <args>${project.build.sourceEncoding}</args>
              <args>-proceedOnError</args>
              <!-- Use this form, for Tycho 22 or less.
                <args>-log</args>
                <args>${project.build.directory}/@dot.xml</args>
              -->
            </compilerArgs>
            <!-- Use this form for Tycho 23 or greater -->
            <log>xml</log>
            <logDirectory>${project.build.directory}/compilelogs</logDirectory>
            <showWarnings>true</showWarnings>
            <excludeResources>
              <exclude>**/package.html</exclude>
            </excludeResources>
            <useProjectSettings>false</useProjectSettings>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-packaging-plugin</artifactId>
          <version>${tycho.version}</version>
          <dependencies>
            <dependency>
              <groupId>org.eclipse.tycho.extras</groupId>
              <artifactId>tycho-buildtimestamp-jgit</artifactId>
              <version>${tycho.version}</version>
            </dependency>
            <dependency>
              <groupId>org.eclipse.tycho.extras</groupId>
              <artifactId>tycho-sourceref-jgit</artifactId>
              <version>${tycho.version}</version>
            </dependency>
          </dependencies>
          <configuration>
            <format>${qualifier.format}</format>
            <timestampProvider>jgit</timestampProvider>
            <jgit.ignore>
              pom.xml
              .polyglot.build.properties
            </jgit.ignore>
            <jgit.dirtyWorkingTree>${jgit.dirtyWorkingTree-platformDefault}</jgit.dirtyWorkingTree>
            <sourceReferences>
              <generate>true</generate>
            </sourceReferences>
            <archive>
              <addMavenDescriptor>false</addMavenDescriptor>
            </archive>
            <additionalFileSets combine.children="append">
              <fileSet>
                <directory>${project.build.directory}</directory>
                <includes>
                  <include>.api_description</include>
                </includes>
              </fileSet>
            </additionalFileSets>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-surefire-plugin</artifactId>
          <version>${tycho.version}</version>
          <configuration>
            <enableAssertions>true</enableAssertions>
            <argLine>${surefire.testArgLine} ${surefire.platformSystemProperties} ${surefire.systemProperties} ${surefire.moduleProperties}</argLine>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-source-plugin</artifactId>
          <version>${tycho.version}</version>
          <configuration>
            <distinctSourceRoots>true</distinctSourceRoots>
            <archive>
              <addMavenDescriptor>false</addMavenDescriptor>
            </archive>
            <reuseBrandingPlugin>false</reuseBrandingPlugin>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-p2-director-plugin</artifactId>
          <version>${tycho.version}</version>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-p2-repository-plugin</artifactId>
          <version>${tycho.version}</version>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-p2-plugin</artifactId>
          <version>${tycho.version}</version>
          <configuration>
            <baselineMode>warn</baselineMode>
            <baselineReplace>all</baselineReplace>
            <baselineRepositories>
              <repository>
                <url>${comparator.repo}</url>
              </repository>
            </baselineRepositories>
            <ignoredPatterns>
              <pattern>META-INF/ECLIPSE_.RSA</pattern>
              <pattern>META-INF/ECLIPSE_.SF</pattern>
            </ignoredPatterns>
            <generateDownloadStatsProperty>true</generateDownloadStatsProperty>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>xml-maven-plugin</artifactId>
          <version>1.0.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  <profiles>
   <profile>
      <id>java16patch</id>
      <properties>
        <qualifier.format>'v'yyyyMMdd-HHmm'_BETA_JAVA16'</qualifier.format>
 
        <featureToPatch>org.eclipse.jdt</featureToPatch>
        <featureToPatchPDE>org.eclipse.pde</featureToPatchPDE>

        <!--
          For future versions, in addition to changing this value of "featureToPatchVersion",
          the same value needs to be edited in
          .../java16patch/org.eclipse.jdt.java16patch/feature.xml
          and
          .../java16patch/org.eclipse.jdt-feature-dummy/feature.xml
          and it of course, must "match" what ever version was produced by the build specified
          a few lines below, as the eclipse-p2-repo-java16patch p2 repository, as well as the lower
          bound, in 'versionRangeForPatch'.
 
          Also, when new patch created, should update the wiki at
          https://wiki.eclipse.org/Java16
        -->
        <!-- This needs the version of the feature to be patched. -->
        <featureToPatchVersion>3.18.700.v20210224-1800</featureToPatchVersion>
        <featureToPatchVersionPDE>3.14.700.v20210224-1800</featureToPatchVersionPDE>
        <!-- Can specify an exact range here, or something of a loose range, depending on what's needed. -->
        <versionRangeForPatch>[3.18.700.v20210224-1800,3.18.749.v20210429-1800)</versionRangeForPatch>
        <versionRangeForPatchPDE>[3.14.700.v20210224-1800,3.14.749.v20210429-1800)</versionRangeForPatchPDE>
        <!-- Comment this line when a patch is required on top of I-build -->
        <comparator.repo>https://download.eclipse.org/eclipse/updates/4.19-I-builds/I20210224-1800/</comparator.repo>
      </properties>
      <repositories>
       <repository>
         <id>eclipse-p2-repo-java16patch</id>
         <url>https://download.eclipse.org/eclipse/updates/4.19-I-builds/I20210224-1800/</url>
         <layout>p2</layout>
       </repository>
     </repositories>
   </profile>
   <profile>
      <id>build-individual-bundles</id>
      <activation>
        <property>
          <!-- Enable if aggregatorBuild property is not set -->
          <name>!aggregatorBuild</name>
        </property>
      </activation>
      <properties>
        <!--
          This eclipse-p2-repo.url is specifically for the build individual bundles profile and Gerrit jobs.
          Default is set to I-builds for main development cycle.
          For maintenance streams should always be "M-builds".
          Ideally, this value would be provided by the environment, see bug 489789.
        -->
        <eclipse-p2-repo.url>https://download.eclipse.org/eclipse/updates/4.20-I-builds</eclipse-p2-repo.url>
      </properties>
      <repositories>
        <repository>
          <id>eclipse</id>
          <url>${eclipse-p2-repo.url}</url>
          <layout>p2</layout>
        </repository>
      </repositories>
    </profile>
    <profile>
      <id>eclipse-sign</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>target-platform-configuration</artifactId>
            <version>${tycho.version}</version>
            <configuration>
              <includePackedArtifacts>false</includePackedArtifacts>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-pack200a-plugin</artifactId>
            <version>${tycho.version}</version>
            <executions>
              <execution>
                <id>pack200-normalize</id>
                <goals>
                  <goal>normalize</goal>
                </goals>
                <phase>verify</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.eclipse.cbi.maven.plugins</groupId>
            <artifactId>eclipse-jarsigner-plugin</artifactId>
            <version>${cbi-plugins.version}</version>
            <executions>
              <execution>
                <id>sign</id>
                <goals>
                  <goal>sign</goal>
                </goals>
                <phase>verify</phase>
              </execution>
            </executions>
            <configuration>
              <excludeInnerJars>${defaultSigning-excludeInnerJars}</excludeInnerJars>
              <!--
               The default timeout is 0 seconds which means "wait forever": https://www.eclipse.org/cbi/sitedocs/eclipse-jarsigner-plugin/sign-mojo.html#timeoutMillis
               We don't want to wait until the build finally aborts, so, setting a timeout (see bug 507369).
               Increasing timeout from 60000 to 120000 (see bug 544823).
              -->
              <timeoutMillis>120000</timeoutMillis>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-pack200b-plugin</artifactId>
            <version>${tycho.version}</version>
            <executions>
              <execution>
                <id>pack200-pack</id>
                <goals>
                  <goal>pack</goal>
                </goals>
                <phase>verify</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-p2-plugin</artifactId>
            <version>${tycho.version}</version>
            <executions>
              <execution>
                <id>p2-metadata</id>
                <goals>
                  <goal>p2-metadata</goal>
                </goals>
                <phase>verify</phase>
              </execution>
            </executions>
            <configuration>
              <defaultP2Metadata>false</defaultP2Metadata>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>eclipse-pack</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>target-platform-configuration</artifactId>
            <version>${tycho.version}</version>
            <configuration>
              <includePackedArtifacts>false</includePackedArtifacts>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-pack200a-plugin</artifactId>
            <version>${tycho.version}</version>
            <executions>
              <execution>
                <id>pack200-normalize</id>
                <goals>
                  <goal>normalize</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-pack200b-plugin</artifactId>
            <version>${tycho.version}</version>
            <executions>
              <execution>
                <id>pack200-pack</id>
                <goals>
                  <goal>pack</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-p2-plugin</artifactId>
            <version>${tycho.version}</version>
            <executions>
              <execution>
                <id>p2-metadata</id>
                <goals>
                  <goal>p2-metadata</goal>
                </goals>
                <phase>package</phase>
              </execution>
            </executions>
            <configuration>
              <defaultP2Metadata>false</defaultP2Metadata>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>bree-libs</id>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.eclipse.tycho</groupId>
              <artifactId>tycho-compiler-plugin</artifactId>
              <version>${tycho.version}</version>
              <configuration>
                <!--
                  this tells Tycho to use JRE libraries that match bundle runtime execution environment
                  https://wiki.eclipse.org/Tycho/Release_Notes/0.14
                  TODO provide CBI-specific wiki that explains how to setup BREE libraries and toolchain.xml
                -->
                <useJDK>BREE</useJDK>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>partial-build</id>
      <activation>
        <property>
          <name>eclipse-sdk-repo.url</name>
        </property>
      </activation>
      <repositories>
        <repository>
          <id>eclipse-sdk-repo</id>
          <url>${eclipse-sdk-repo.url}</url>
          <layout>p2</layout>
        </repository>
      </repositories>
    </profile>
    <profile>
      <id>default-toolsjar</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <file>
          <exists>${java.home}/../lib/tools.jar</exists>
        </file>
      </activation>
      <properties>
        <toolsjar>${java.home}/../lib/tools.jar</toolsjar>
      </properties>
    </profile>
    <profile>
      <id>missing-toolsjar</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <file>
          <exists>${java.home}/../Classes/classes.jar</exists>
        </file>
      </activation>
      <properties>
        <toolsjar>${java.home}/../Classes/classes.jar</toolsjar>
      </properties>
    </profile>
    <profile>
      <id>api-generation</id>
      <activation>
        <!-- Does it have to be a profile if we can evaluate condition reliably in antrun? -->
        <file><exists>META-INF/MANIFEST.MF</exists></file>
        <property>
          <name>!longnotexistingproperty</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>check-has-apiTools-nature</id>
                <phase>validate</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <exportAntProperties>true</exportAntProperties>
                  <target>
                    <loadfile srcfile=".project" property="natureIn.project">
                      <filterchain>
                        <linecontains>
                          <contains value="org.eclipse.pde.api.tools.apiAnalysisNature"/>
                        </linecontains>
                      </filterchain>
                    </loadfile>
                    <condition property="skipAPIDescription" value="false" else="true">
                        <isset property="natureIn.project" />
                    </condition>
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-eclipserun-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>eclipse-run</goal>
                </goals>
                <phase>process-classes</phase>
                <id>build-.api_description</id>
                <configuration>
                  <skip>${skipAPIDescription}</skip>
                  <work>${project.build.directory}/apigeneration-workspace</work>
                  <appArgLine>-application org.eclipse.pde.api.tools.apiGeneration
                  -projectName ${project.artifactId}_${qualifiedVersion}
                  -project ${project.basedir}
                  -binary ${tychoProject.build.outputDirectories}
                  -target ${project.build.directory}
                  </appArgLine>
                  <dependencies>
                    <!-- list of bundles that we need -->
                    <dependency>
                      <artifactId>org.eclipse.pde.api.tools</artifactId>
                      <type>eclipse-plugin</type>
                    </dependency>
                    <dependency>
                      <artifactId>org.eclipse.pde.build</artifactId>
                      <type>eclipse-plugin</type>
                    </dependency>
                    <dependency>
                      <artifactId>org.eclipse.pde.core</artifactId>
                      <type>eclipse-plugin</type>
                    </dependency>
                    <dependency>
                      <artifactId>org.eclipse.equinox.launcher</artifactId>
                      <type>eclipse-plugin</type>
                    </dependency>
                    <dependency>
                      <artifactId>org.eclipse.osgi.compatibility.state</artifactId>
                      <type>eclipse-plugin</type>
                    </dependency>
                    <dependency>
                      <artifactId>javax.annotation</artifactId>
                      <type>eclipse-plugin</type>
                    </dependency>
                  </dependencies>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
       <id>api-check</id>
       <activation>
         <activeByDefault>false</activeByDefault>
       </activation>
       <build>
         <plugins>
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>check-skip-api-analysis</id>
                <phase>verify</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <skip>${skipAPIAnalysis}</skip>
                  <exportAntProperties>true</exportAntProperties>
                  <target>
                    <condition property="skipAPIAnalysis" value="true">
                      <not>
                        <available file="${basedir}/META-INF/MANIFEST.MF"/>
                      </not>
                    </condition>
                    <echo file="${project.build.directory}/${project.artifactId}-apiBaseline.target">
                      <![CDATA[
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.8"?>
<target name="${project.artifactId}-apiBaseline" sequenceNumber="1">
	<locations>
		<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="false" type="InstallableUnit">
			<repository location="${previous-release.baseline}"/>
			<unit id="${project.artifactId}" version="0.0.0"/>
		</location>
	</locations>
</target>
                      ]]>
                    </echo>
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-dependency-tools-plugin</artifactId>
            <version>${tycho.version}</version>
            <executions>
              <execution>
                <id>list-dependencies</id>
                <goals>
                  <goal>list-dependencies</goal>
                </goals>
                <phase>verify</phase>
                <configuration>
                  <skip>${skipAPIAnalysis}</skip>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-eclipserun-plugin</artifactId>
            <executions>
              <execution>
                <id>api-analysis</id>
                <goals>
                  <goal>eclipse-run</goal>
                </goals>
                <phase>verify</phase>
                <configuration>
                  <skip>${skipAPIAnalysis}</skip>
                  <!-- keep workspace across execution to reuse downloaded artifacts -->
                  <clearWorkspaceBeforeLaunch>false</clearWorkspaceBeforeLaunch>
                  <!-- need to set workspace to a dir that's not a child of the project and that the same for all executions -->
                  <work>${user.dir}/apiAnalyzer-workspace</work>
                  <applicationsArgs>
                    <args>-application</args>
                    <args>org.eclipse.pde.api.tools.apiAnalyzer</args>
                    <args>-project</args>
                    <args>${project.basedir}</args>
                    <args>-baseline</args>
                    <args>${project.build.directory}/${project.artifactId}-apiBaseline.target</args>
                    <args>-dependencyList</args>
                    <args>${project.build.directory}/dependencies-list.txt</args>
                    <args>-failOnError</args>
                  </applicationsArgs>
                  <jvmArgs>
                  	<jvmArg>-Xmx2048M</jvmArg>
                  </jvmArgs>
                  <dependencies>
                    <dependency>
                      <artifactId>org.eclipse.pde.api.tools</artifactId>
                      <type>p2-installable-unit</type>
                    </dependency>
                    <dependency>
                      <artifactId>javax.annotation</artifactId>
                      <type>p2-installable-unit</type>
                    </dependency>
                    <dependency>
                      <artifactId>org.eclipse.equinox.p2.transport.ecf</artifactId>
                      <type>p2-installable-unit</type>
                    </dependency>
                    <dependency>
                      <artifactId>org.eclipse.ecf.provider.filetransfer.ssl</artifactId>
                      <type>p2-installable-unit</type>
                    </dependency>
                    <dependency>
                      <artifactId>org.eclipse.equinox.p2.touchpoint.natives</artifactId>
                      <type>p2-installable-unit</type>
                    </dependency>
                    <dependency>
                      <artifactId>org.eclipse.osgi.compatibility.state</artifactId>
                      <type>p2-installable-unit</type>
                    </dependency>
                  </dependencies>
                </configuration>
              </execution>
            </executions>
          </plugin>
         </plugins>
      </build>
    </profile>

    <profile>
      <id>update-branding-plugins-about.mappings</id>
      <activation>
        <file>
          <exists>${basedir}/about.mappings</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
              <execution>
                <id>process-about.mappings</id>
                <phase>prepare-package</phase>
                <configuration>
                  <outputDirectory>${project.build.directory}</outputDirectory>
                  <overwrite>true</overwrite>
                  <resources>
                    <resource>
                      <directory>${basedir}</directory>
                      <includes>
                        <include>about.mappings</include>
                      </includes>
                      <filtering>true</filtering>
                    </resource>
                  </resources>
                </configuration>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-packaging-plugin</artifactId>
            <version>${tycho.version}</version>
            <configuration>
              <additionalFileSets>
                <fileSet>
                  <directory>${project.build.directory}</directory>
                  <includes>
                    <include>about.mappings</include>
                  </includes>
                </fileSet>
              </additionalFileSets>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>coverage</id>
      <properties>
        <!-- Since we append output of various tests, write to a common folder besides tests -->
        <!-- it's recommended to override that to an absolute value in specific Hudson configurations
          and Sonar integration -->
        <jacoco.destFile>${project.basedir}/../target/jacoco.exec</jacoco.destFile>
        <sonar.jacoco.reportPath>${jacoco.destFile}</sonar.jacoco.reportPath>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.6</version>
            <executions>
              <execution>
                <id>jacoco-agent</id>
                <goals>
                  <goal>prepare-agent</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <append>true</append>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>spotbugs</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.github.spotbugs</groupId>
            <artifactId>spotbugs-maven-plugin</artifactId>
            <version>4.1.4</version>
            <configuration>
              <targetJDK>${java.version}</targetJDK>
              <xmlOutput>true</xmlOutput>
              <effort>Max</effort>
              <maxHeap>2000</maxHeap>
              <threshold>medium</threshold>
              <failOnError>false</failOnError>
              <excludeFilterFile>spotbugs/spotbugs-exclude.xml</excludeFilterFile>
            </configuration>
            <executions>
              <execution>
                <id>analyze-compile</id>
                <phase>compile</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>pmd</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>3.13.0</version>
            <configuration>
            <!-- PMD options -->
              <targetJDK>${java.version}</targetJDK>
              <aggregate>true</aggregate>
              <failOnViolation>false</failOnViolation>
              <format>xml</format>
              <rulesets><ruleset>pmd/eclipse_ruleset.xml</ruleset></rulesets>
            <!-- CPD options -->
              <minimumTokens>100</minimumTokens>
              <ignoreIdentifiers>true</ignoreIdentifiers>
            </configuration>
            <executions>
              <execution>
                <id>analyze-compile</id>
                <phase>compile</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>checkstyle</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>3.1.1</version>
            <configuration>
              <consoleOutput>true</consoleOutput>
              <failsOnError>false</failsOnError>
              <configLocation>checkstyle/checkstyle.xml</configLocation>
            </configuration>
            <executions>
              <execution>
                <id>analyze-compile</id>
                <phase>compile</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>macos</id>
      <activation>
        <os>
          <family>mac</family>
        </os>
      </activation>
      <properties>
        <surefire.platformSystemProperties>-XstartOnFirstThread</surefire.platformSystemProperties>
      </properties>
    </profile>

    <profile>
      <id>jdk9-or-newer</id>
      <activation>
        <jdk>[9,)</jdk>
      </activation>
      <properties>
        <surefire.moduleProperties>--add-modules=ALL-SYSTEM</surefire.moduleProperties>
      </properties>
    </profile>
  </profiles>
  <scm>
    <connection>scm:git:https://git.eclipse.org/r/platform/eclipse.platform.releng.aggregator</connection>
  </scm>
</project>
