<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012, 2014 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:
    Thanh Ha (Eclipse Foundation) - initial implementation
    EclipseSource - ongoing development
-->

<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.epp</groupId>
    <artifactId>org.eclipse.epp-parent</artifactId>
    <version>4.4.1-SNAPSHOT</version>
    <relativePath>../../releng/org.eclipse.epp.config/parent/</relativePath>
  </parent>

  <groupId>org.eclipse.epp</groupId>
  <artifactId>epp.package.jee</artifactId>
  <version>4.4.1-SNAPSHOT</version>
  <packaging>eclipse-repository</packaging>

  <build>
    <plugins>

      <plugin>
        <groupId>org.eclipse.tycho.extras</groupId>
        <artifactId>tycho-p2-extras-plugin</artifactId>
        <executions>
          <execution>
            <id>mirror-to-central-epp-repository</id>
            <phase>verify</phase>
            <goals>
              <goal>mirror</goal>
            </goals>
            <configuration>
              <source>
                <repository>
                  <url>${project.build.directory}/repository</url>
                </repository>
              </source>
              <ius>
                <iu>
                  <query>
                    <expression>id ~= /*epp*/ &amp;&amp; !(id ~= /*org.eclipse.epp.mpc*/)</expression>
                  </query>
                </iu>
              </ius>
              <destination>${eclipse.epp.targetRepository}</destination>
              <followOnlyFilteredRequirements>true</followOnlyFilteredRequirements>
              <includeOptional>false</includeOptional>
              <includeNonGreedy>false</includeNonGreedy>
              <includePacked>true</includePacked>
              <append>true</append>
            </configuration>
          </execution>
        </executions>
      </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>
        </executions>
        <configuration>
          <products>
            <product>
              <id>${project.artifactId}</id>
              <rootFolder>eclipse</rootFolder>
            </product>
          </products>
          <profile>${project.artifactId}</profile>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>archiving</id>
      <!-- This profile is only activated when running the build on a Unix-like OS where we can expect a working Bash -->
      <activation>
        <activeByDefault>false</activeByDefault>
        <os>
          <family>unix</family>
        </os>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <executions>
              <execution>
                <id>archive-products</id>
                <phase>pre-integration-test</phase>
                <goals>
                  <goal>exec</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <executable>${basedir}/../../releng/org.eclipse.epp.config/tools/createArchives.sh</executable>
              <arguments>
                <argument>${eclipse.epp.archiveDirectory}</argument>
                <argument>${project.build.directory}/products/epp.package.${eclipse.epp.id}</argument>
                <argument>${build}_eclipse-${eclipse.epp.id}-${eclipse.simultaneous.release.id}</argument>
              </arguments>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>eclipse-sign</id>
      <build>
        <plugins>
<!-- DISABLE SIGNING on MAC OSX
          <plugin>
            <groupId>org.eclipse.cbi.maven.plugins</groupId>
            <artifactId>eclipse-macsigner-plugin</artifactId>
            <version>${cbi.version}</version>
            <executions>
              <execution>
                <id>sign</id>
                <phase>package</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
                <configuration>
                  <baseSearchDir>${project.build.directory}/products/${project.artifactId}</baseSearchDir>
                  <fileNames>
                    <fileName>Eclipse.app</fileName>
                  </fileNames>
                </configuration>
              </execution>
            </executions>
          </plugin>
-->
          <plugin>
            <groupId>org.eclipse.cbi.maven.plugins</groupId>
            <artifactId>eclipse-winsigner-plugin</artifactId>
            <version>${cbi.version}</version>
            <executions>
              <execution>
                <id>sign</id>
                <goals>
                  <goal>sign</goal>
                </goals>
                <phase>package</phase>
                <configuration>
                  <baseSearchDir>${project.build.directory}/products/${project.artifactId}</baseSearchDir>
                  <fileNames>
                    <fileName>eclipse.exe</fileName>
                    <fileName>eclipsec.exe</fileName>
                  </fileNames>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
