<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright (C) 2009, Igor Fedorenko <igor@ifedorenko.com>
   Copyright (C) 2011, Chris Aniszczyk <caniszczyk@gmail.com>
   Copyright (C) 2011-2012, Matthias Sohn <matthias.sohn@sap.com>

   All rights reserved. This program and the accompanying materials
   are made available under the terms of the Eclipse Public License 2.0
   which accompanies this distribution, and is available at
   https://www.eclipse.org/legal/epl-2.0/

   SPDX-License-Identifier: EPL-2.0
-->

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.eclipse.egit</groupId>
    <artifactId>egit-parent</artifactId>
    <version>5.6.1-SNAPSHOT</version>
  </parent>

  <artifactId>org.eclipse.egit.repository</artifactId>
  <packaging>eclipse-repository</packaging>

  <name>EGit P2 Repository</name>
  <properties>
    <p2MirrorsURL>https://www.eclipse.org/downloads/download.php?file=${PUBLISH_FOLDER}&amp;format=xml</p2MirrorsURL>
    <p2StatsURL>https://download.eclipse.org/stats/egit/${project.artifactId}</p2StatsURL>
    <!-- At the moment, this list of features needs to be maintained manually. -->
    <statsTrackedArtifacts>org.eclipse.jgit.feature,org.eclipse.jgit.source.feature,org.eclipse.jgit.pgm.feature,org.eclipse.jgit.pgm.source.feature,org.eclipse.jgit.http.apache.feature,org.eclipse.jgit.ssh.apache.feature,org.eclipse.egit.feature,org.eclipse.egit.gitflow.feature,org.eclipse.egit.mylyn.feature,org.eclipse.egit.source.feature</statsTrackedArtifacts>
  </properties>

  <pluginRepositories>
    <pluginRepository>
      <id>jboss-public-repository-group</id>
      <name>JBoss Public Repository Group</name>
      <url>https://repository.jboss.org/nexus/content/groups/public/</url>
    </pluginRepository>
  </pluginRepositories>
  <build>
    <plugins>
      <plugin>
        <groupId>org.jboss.tools.tycho-plugins</groupId>
        <artifactId>repository-utils</artifactId>
        <executions>
          <execution>
            <id>generate-facade</id>
            <phase>package</phase>
            <goals>
              <goal>generate-repository-facade</goal>
            </goals>
            <configuration>
              <siteTemplateFolder>siteTemplate/</siteTemplateFolder>
              <!-- Symbols are used while expanding index.html template -->
              <symbols>
                <update.site.name>EGit Update Site</update.site.name>
                <update.site.description>Use this URL in Eclipse to install EGit and JGit</update.site.description>
                <update.site.version>${project.version}</update.site.version>
                <target.eclipse.version>4.6.0 (Neon) or newer</target.eclipse.version>
              </symbols>
              <associateSites>
                <site>https://download.eclipse.org/e4/snapshots/org.eclipse.e4.ui</site>
              </associateSites>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.eclipse.tycho.extras</groupId>
        <artifactId>tycho-eclipserun-plugin</artifactId>
        <version>${tycho-version}</version>
        <executions>
         <execution>
          <id>add-repo-properties</id>
          <goals>
           <goal>eclipse-run</goal>
          </goals>
          <phase>package</phase>
          <configuration>
           <executionEnvironment>JavaSE-1.8</executionEnvironment>
           <appArgLine>-application org.eclipse.wtp.releng.tools.addRepoProperties</appArgLine>
           <!-- See <http://wiki.eclipse.org/Equinox/p2/p2.mirrorsURL>. -->
           <!-- See <http://wiki.eclipse.org/Equinox_p2_download_stats>. -->
           <argLine>-DartifactRepoDirectory=${project.build.directory}/repository -Dp2MirrorsURL=${p2MirrorsURL} -Dp2StatsURI=${p2StatsURL} -DstatsTrackedArtifacts=${statsTrackedArtifacts} -DstatsArtifactsSuffix=-${project.version}</argLine>
           <dependencies>
            <dependency>
             <artifactId>org.eclipse.wtp.releng.tools.feature</artifactId>
             <type>eclipse-feature</type>
            </dependency>
           </dependencies>
           <repositories>
            <repository>
             <url>https://download.eclipse.org/webtools/releng/repository</url>
             <layout>p2</layout>
            </repository>
            <repository>
             <url>https://download.eclipse.org/staging/neon/</url>
             <layout>p2</layout>
            </repository>
           </repositories>
          </configuration>
         </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
