<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (C) 2013, 2018 EclipseSource and others.
  All rights reserved. This program and the accompanying materials
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
  http://www.eclipse.org/legal/epl-v10.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.9.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <properties>
    <java.version>1.8</java.version>
    <maven.version>3.1.1</maven.version>
    <tycho.version>1.2.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>2018-09-M1</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>2018-09 M1 (4.9.0M1)</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/2018-09/</eclipse.simultaneous.release.repository>
  </properties>

  <!--
     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.
  -->
  <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>
  </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</arch>
            </environment>
            <environment>
              <os>linux</os>
              <ws>gtk</ws>
              <arch>x86_64</arch>
            </environment>
            <environment>
              <os>win32</os>
              <ws>win32</ws>
              <arch>x86</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>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-versions</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>${maven.version}</version>
                </requireMavenVersion>
                <requireJavaVersion>
                  <version>${java.version}</version>
                </requireJavaVersion>
              </rules>
            </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.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>1.4</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>
