<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2015 BSI Business Systems Integration AG.
    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:
        BSI Business Systems Integration AG - initial API and implementation

-->
<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.scout.sdk</groupId>
    <artifactId>org.eclipse.scout.sdk.p2</artifactId>
    <version>9.0.0-SNAPSHOT</version>
    <relativePath>../org.eclipse.scout.sdk.p2/pom.xml</relativePath>
  </parent>

  <artifactId>org.eclipse.scout.sdk-repository</artifactId>
  <packaging>eclipse-repository</packaging>

  <name>Eclipse Scout SDK Repository</name>

  <properties>
    <p2repo-zip-path>${project.build.directory}/org.eclipse.scout.sdk-repository-${project.version}.zip</p2repo-zip-path>
  </properties>

  <!-- java api compatibility test not necessary for repository. Why is it executed? -->
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>animal-sniffer-maven-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>eclipse-stage</id>

      <properties>
        <buildType>N</buildType>
        <stageTargetDir>nightly/9.0</stageTargetDir>
        <buildId>${buildType}${master_build_timestamp}</buildId>
        <buildsToKeep>3</buildsToKeep>
      </properties>

      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <configuration>
              <rules>
                <requirePluginVersions>
                  <unCheckedPluginList>org.eclipse.scout.sdk:updatesite-maven-plugin</unCheckedPluginList>
                </requirePluginVersions>
              </rules>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.eclipse.scout.sdk</groupId>
            <artifactId>updatesite-maven-plugin</artifactId>
            <version>${project.version}</version>
            <configuration>
              <updatesiteDir>${buildId}</updatesiteDir>
              <compositeDir>${stageTargetDir}</compositeDir>
              <maxSize>${buildsToKeep}</maxSize>
            </configuration>
            <executions>
              <execution>
                <id>stage</id>
                <phase>install</phase>
                <goals>
                  <goal>stage</goal>
                  <goal>publish</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
