<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->
<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.apache.maven</groupId>
    <artifactId>maven-parent</artifactId>
    <version>27-SNAPSHOT</version>
  </parent>

  <artifactId>maven-site</artifactId>
  <version>1.0</version>
  <packaging>pom</packaging>

  <name>Apache Maven Site</name>
  <url>http://maven.apache.org/</url>

  <prerequisites>
    <maven>3.0</maven>
  </prerequisites>

  <!-- repeated here so that maven-site is not appended -->
  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/site/trunk/</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/site/trunk/</developerConnection>
    <url>http://svn.apache.org/viewcvs.cgi/maven/site/trunk/</url>
  </scm>

  <issueManagement>
    <system>jira</system>
    <url>https://issues.apache.org/jira/browse/MNGSITE</url>
  </issueManagement>

  <properties>
    <currentStableVersion>3.3.3</currentStableVersion>
    <currentStableReleaseDate>2015-04-28</currentStableReleaseDate>
    <current33xVersion>3.3.3</current33xVersion>
    <current32xVersion>3.2.5</current32xVersion>
    <current31xVersion>3.1.1</current31xVersion>
    <current30xVersion>3.0.5</current30xVersion>
    <currentAntTasksVersion>2.1.3</currentAntTasksVersion>
    <currentAntTasksReleaseDate>2011-04-17</currentAntTasksReleaseDate>
    <versions2x>2.2.1,2.2.0,2.1.0,2.0.11,2.0.10,2.0.9,2.0.8,2.0.7,2.0.6,2.0.5,2.0.4,2.0.3,2.0.2,2.0.1,2.0</versions2x>
    <versions3x>3.3.3,3.3.1,3.2.5,3.2.3,3.2.2,3.2.1,3.1.1,3.1.0,3.1.0-alpha-1,3.0.5,3.0.4,3.0.3,3.0.2,3.0.1,3.0,3.0-beta-3,3.0-beta-2,3.0-beta-1,3.0-alpha-7,3.0-alpha-6,3.0-alpha-5,3.0-alpha-4,3.0-alpha-3</versions3x>
    <site.output>${project.build.directory}/site</site.output>
  </properties>

  <repositories>
    <repository>
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>http://repository.apache.org/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>http://repository.apache.org/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </pluginRepository>
  </pluginRepositories>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-pdf-plugin</artifactId>
          <version>1.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.4</version>
          <configuration>
            <siteDirectory>${project.basedir}/content</siteDirectory>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>check-site-inheritance</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <phase>site</phase>
            <configuration>
              <rules>
                <requireFilesExist>
                  <message>Generated site should have inherited the correct skin from the parent</message>
                  <!-- check assumes you've run with "clean" -->
                  <files>
                    <file>${project.reporting.outputDirectory}/images/apache-maven-project-2.png</file>
                  </files>
                </requireFilesExist>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-resources</id>
            <!-- here the phase you need -->
            <phase>pre-site</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.reporting.outputDirectory}</outputDirectory>
              <resources>
                <resource>
                  <directory>${project.basedir}/content/filtered-resources</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>chmod</id>
            <phase>site</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <chmod file="${project.reporting.outputDirectory}/download.cgi" perm="ugo+rx"/>
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <executions>
          <execution>
            <id>jar</id>
            <phase>site</phase>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <jarOutputDirectory>${project.reporting.outputDirectory}</jarOutputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <reporting>
    <excludeDefaults>true</excludeDefaults>
    <outputDirectory>${site.output}</outputDirectory>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>2.8</version>
        <reportSets>
          <reportSet><!-- don't execute inherited reports, since some are useless and cannot be removed -->
            <configuration>
              <skip>true</skip>
            </configuration>
          </reportSet>
          <reportSet><!-- execute only reports necessary for main site, in a dedicated reportSet -->
            <id>site-mpir</id>
            <reports>
              <report>index</report>          <!-- xdoc/index.xml.vm -->
              <report>project-team</report>
              <report>mailing-list</report>
              <report>scm</report>            <!-- xdoc/source-repository.xml -->
              <report>issue-tracking</report> <!-- markdown/issue-tracking.md -->
              <report>cim</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting>

  <profiles>
    <profile>
      <id>pdf</id>
      <activation>
        <property>
          <!--name>pdf.skip</name-->
          <name>pdf.exec</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pdf-plugin</artifactId>
            <executions>
              <execution>
                <id>pdf</id>
                <phase>site</phase>
                <goals>
                  <goal>pdf</goal>
                </goals>
                <configuration>
                  <outputDirectory>${project.reporting.outputDirectory}</outputDirectory>
                  <siteDirectory>${project.basedir}/content</siteDirectory>
                  <docDescriptor>${project.basedir}/content/pdf.xml</docDescriptor>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>linkcheck</id>
      <activation>
        <property>
          <!--name>linkcheck.skip</name-->
          <name>linkcheck.exec</name>
        </property>
      </activation>
      <reporting>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-linkcheck-plugin</artifactId>
            <version>1.0</version>
            <configuration>
              <excludedLinks>
                <excludedLink>**/archetype/*</excludedLink>
                <excludedLink>**/ant-tasks/*</excludedLink>
                <excludedLink>**/doxia/*</excludedLink>
                <excludedLink>**/jxr/*</excludedLink>
                <excludedLink>**/maven-1.x/*</excludedLink>
                <excludedLink>**/mercury/*</excludedLink>
                <excludedLink>**/scm/*</excludedLink>
                <excludedLink>**/shared/*</excludedLink>
                <excludedLink>**/skins/*</excludedLink>
                <excludedLink>**/surefire/*</excludedLink>
                <excludedLink>**/wagon/*</excludedLink>
                <excludedLink>**/plugins/maven-*</excludedLink>
                <excludedLink>**/ref/*</excludedLink>
                <excludedLink>**/maven-model/*</excludedLink>
                <excludedLink>**/maven-settings/*</excludedLink>
                <excludedLink>irc://*</excludedLink>
              </excludedLinks>
            </configuration>
          </plugin>
        </plugins>
      </reporting>
    </profile>
  </profiles>
</project>
