<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (C) 2013, 2019 EclipseSource and others.
  All rights reserved. This program and the accompanying materials
  are made available under the terms of the Eclipse Public License v2.0
  which accompanies this distribution, and is available at
  http://www.eclipse.org/legal/epl-v20.html

  Contributors:
     EclipseSource - initial implementation
     Mikael Barbero (Eclipse Foundation) - clean-up and parent factorization
-->
<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>

  <name>Eclipse Packaging Project (EPP) parent</name>

  <groupId>org.eclipse.epp</groupId>
  <artifactId>org.eclipse.epp-parent</artifactId>
  <version>4.13.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <properties>
    <maven.version>3.1.1</maven.version>
    <tycho.version>1.3.0</tycho.version>
    <tycho.extras.version>${tycho.version}</tycho.extras.version>
    <tycho.scmUrl>scm:git:git://git.eclipse.org/gitroot/epp/org.eclipse.epp.packages.git</tycho.scmUrl>
    <cbi.version>1.1.5</cbi.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.build.timestamp.format>yyyyMMdd-HHmm</maven.build.timestamp.format>
    <build>${maven.build.timestamp}</build>
    <!-- The location that is used to assemble the single EPP configuration p2 repository -->
    <eclipse.epp.archiveDirectory>${basedir}/../../archive/</eclipse.epp.archiveDirectory>
    <!-- The location that is used to assemble the single EPP configuration p2 repository -->
    <eclipse.epp.targetRepository>${eclipse.epp.archiveDirectory}/repository/</eclipse.epp.targetRepository>
    <!-- ID used to generate the filename of the packages -->
    <eclipse.simultaneous.release.id>2019-09-RC1</eclipse.simultaneous.release.id>
    <!-- Timestamp used in various places, e.g. the about dialog (see about.mappings) -->
    <eclipse.simultaneous.release.build>${maven.build.timestamp}</eclipse.simultaneous.release.build>
    <!-- Human readable name of the release, e.g. used in the about dialog (see about.mappings) -->
    <eclipse.simultaneous.release.name>2019-09 RC1 (4.13.0RC1)</eclipse.simultaneous.release.name>
    <!-- Upstream p2 repository, used as a source for pre-compiled build artifacts -->
    <eclipse.simultaneous.release.repository>http://download.eclipse.org/staging/2019-09/</eclipse.simultaneous.release.repository>
  </properties>

  <prerequisites>
    <maven>${maven.version}</maven>
  </prerequisites>

  <pluginRepositories>
    <pluginRepository>
      <id>eclipse-tycho</id>
      <url>https://oss.sonatype.org/content/repositories/public/</url>
    </pluginRepository>
    <pluginRepository>
      <id>eclipse-cbi</id>
      <url>https://repo.eclipse.org/content/groups/cbi/</url>
    </pluginRepository>
    <pluginRepository>
      <id>tycho-1.3-staged</id>
      <url>https://oss.sonatype.org/content/repositories/orgeclipsetycho-1050/</url>
    </pluginRepository>
  </pluginRepositories>

  <repositories>
    <repository>
      <id>eclipse-simultaneous-release</id>
      <layout>p2</layout>
      <url>${eclipse.simultaneous.release.repository}</url>
    </repository>
    <repository>
      <id>license-feature</id>
      <url>http://download.eclipse.org/cbi/updates/license/</url>
      <layout>p2</layout>
    </repository>
  </repositories>

  <build>
    <plugins>

      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-maven-plugin</artifactId>
        <extensions>true</extensions>
      </plugin>

      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>target-platform-configuration</artifactId>
        <configuration>
          <includePackedArtifacts>true</includePackedArtifacts>
          <!-- The Parallel Package feature.xml includes a number of other
               features that are marked as optional, and unfortunately they
               seem to be missing in Mars. Ignoring these options features
               for now.
          <dependency-resolution>
            <optionalDependencies>ignore</optionalDependencies>
          </dependency-resolution>
            -->
          <environments>
            <environment>
              <os>linux</os>
              <ws>gtk</ws>
              <arch>x86_64</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>
          </environments>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-packaging-plugin</artifactId>
        <dependencies>
          <dependency>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-buildtimestamp-jgit</artifactId>
            <version>${tycho.extras.version}</version>
          </dependency>
          <dependency> 
            <groupId>org.eclipse.tycho.extras</groupId> 
            <artifactId>tycho-sourceref-jgit</artifactId> 
            <version>${tycho.extras.version}</version> 
          </dependency> 
        </dependencies>
        <configuration>
          <timestampProvider>jgit</timestampProvider>
          <jgit.dirtyWorkingTree>ignore</jgit.dirtyWorkingTree>
          <format>yyyyMMdd-HHmm</format>
          <sourceReferences> 
            <generate>true</generate> 
          </sourceReferences> 
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>regex-property</id>
            <goals>
              <goal>regex-property</goal>
            </goals>
            <configuration>
              <name>eclipse.epp.id</name>
              <value>${project.artifactId}</value>
              <regex>epp\.package\.(\d*)</regex>
              <replacement>$1</replacement>
              <failIfNoMatch>false</failIfNoMatch>
            </configuration>
          </execution>
        </executions>
      </plugin>

    </plugins>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-maven-plugin</artifactId>
          <version>${tycho.version}</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>1.8</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>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-packaging-plugin</artifactId>
          <version>${tycho.version}</version>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-p2-repository-plugin</artifactId>
          <version>${tycho.version}</version>
          <configuration>
            <includeAllDependencies>true</includeAllDependencies>
            <compress>true</compress>
          </configuration>
          <executions>
            <execution>
              <id>default-assemble-repository</id>
              <phase></phase>
              <configuration>
                <skip>true</skip>
              </configuration>
            </execution>
            <execution>
              <id>default-archive-repository</id>
              <phase></phase>
              <configuration>
                <skip>true</skip>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-surefire-plugin</artifactId>
          <version>${tycho.version}</version>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-source-plugin</artifactId>
          <version>${tycho.version}</version>
          <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.eclipse.tycho.extras</groupId>
          <artifactId>tycho-pack200a-plugin</artifactId>
          <version>${tycho.extras.version}</version>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho.extras</groupId>
          <artifactId>tycho-pack200b-plugin</artifactId>
          <version>${tycho.extras.version}</version>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-p2-plugin</artifactId>
          <version>${tycho.version}</version>
        </plugin>
        <plugin>
          <groupId>org.eclipse.cbi.maven.plugins</groupId>
          <artifactId>eclipse-jarsigner-plugin</artifactId>
          <version>${cbi.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>2.6</version>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho.extras</groupId>
          <artifactId>tycho-source-feature-plugin</artifactId>
          <version>${tycho.extras.version}</version>
          <configuration>
            <archive>
              <addMavenDescriptor>false</addMavenDescriptor>
            </archive>
          </configuration>
          <executions>
            <execution>
              <id>source-feature</id>
              <phase>package</phase>
              <goals>
                <goal>source-feature</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho.extras</groupId>
          <artifactId>tycho-p2-extras-plugin</artifactId>
          <version>${tycho.version}</version>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-p2-director-plugin</artifactId>
          <version>${tycho.version}</version>
          <executions>
            <execution>
              <id>materialize-products</id>
              <goals>
                <goal>materialize-products</goal>
              </goals>
            </execution>
            <execution>
              <id>archive-products</id>
                <phase>pre-integration-test</phase>
                <goals>
                  <goal>archive-products</goal>
                </goals>
            </execution>
          </executions>
          <configuration>
            <formats>
              <linux>tar.gz</linux>
              <macosx>tar.gz</macosx>
              <win32>zip</win32>
            </formats>
            <products>
              <product>
                <id>${project.artifactId}</id>
                <rootFolder>eclipse</rootFolder>
                <rootFolders>
                  <macosx>Eclipse.app</macosx>
                </rootFolders>
                <archiveFileName>${build}_eclipse-${eclipse.epp.id}-${eclipse.simultaneous.release.id}</archiveFileName>
              </product>
            </products>
            <profile>${project.artifactId}</profile>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.eclipse.cbi.maven.plugins</groupId>
          <artifactId>eclipse-dmg-packager</artifactId>
          <version>${cbi.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>1.6</version>
          <executions>
            <execution>
              <id>copy-zips-to-archive-folder</id>
              <phase>pre-integration-test</phase>
              <configuration>
                <target>
                  <copy todir="${basedir}/../../archive">
                    <fileset dir="${project.build.directory}/products">
                      <include name="*.zip" />
                      <include name="*linux*.tar.gz" />
                      <include name="*.dmg" />
                    </fileset>
                  </copy>
                </target>
              </configuration>
              <goals>
                <goal>run</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <profiles>

    <!--
       This profile needs to stay disabled for release builds, but may serve as a testing
       facility when carrying out tests with various p2 repositories. One possible use case
       is to add a p2 repository to the build that provides newer or different artifacts.
       In order to do this one needs to activate this profile explicitly and provide the
       p2 repository URL with a Java property.

       Example: -Depp.wormhole.repository=file:///tmp/myown.p2.repo/
      -->
    <profile>
      <id>p2.wormhole</id>
      <activation>
        <property>
          <name>epp.wormhole.repository</name>
        </property>
      </activation>
      <repositories>
        <repository>
          <id>epp.wormhole.repository</id>
          <layout>p2</layout>
          <url>${epp.wormhole.repository}</url>
        </repository>
      </repositories>
    </profile>

  </profiles>

</project>
