<?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>35-SNAPSHOT</version>
    <relativePath />
  </parent>

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

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

  <!-- repeated here so that maven-site is not appended -->
  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/maven-site.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/maven-site.git</developerConnection>
    <url>https://github.com/apache/maven-site/tree/${project.scm.tag}</url>
    <tag>master</tag>
  </scm>

  <issueManagement>
    <system>jira</system>
    <url>https://issues.apache.org/jira/browse/MNGSITE</url>
  </issueManagement>
  <distributionManagement>
    <site>
      <id>apache.website</id>
      <url>scm:svn:https://svn.apache.org/repos/asf/maven/website/content/</url>
    </site>
  </distributionManagement>

  <properties>
    <maven.site.path>maven-site</maven.site.path>
    <currentStableVersion>3.6.3</currentStableVersion>
    <currentStableReleaseDate>2019-11-26</currentStableReleaseDate>
    <currentStableVersionDetails>cecedd343002696d0abb50b32b541b8a6ba2883f</currentStableVersionDetails>
    <current36xVersion>3.6.3</current36xVersion>
    <current35xVersion>3.5.4</current35xVersion>
    <current33xVersion>3.3.9</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.6.2,3.6.1,3.6.0,3.5.4,3.5.3,3.5.2,3.5.0,3.5.0-beta-1,3.5.0-alpha-1,3.3.9,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>
    <fluidoVersion>1.9.1-SNAPSHOT</fluidoVersion><!-- used by src/xdoc/errors/404.xml.vm -->
    <doxiaVersion>1.9.1</doxiaVersion>
    <doxiaToolsVersion>1.9.1</doxiaToolsVersion>
    <javaVersion>8</javaVersion>
  </properties>

  <repositories>
    <repository><!-- useful to resolve parent pom when it is a SNAPSHOT -->
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>https://repository.apache.org/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </repository>
  </repositories>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-pdf-plugin</artifactId>
          <version>1.4</version>
        </plugin>
        <!-- publish mono-module site with "mvn site-deploy" -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.9.0</version>
          <configuration>
            <siteDirectory>${project.basedir}/content</siteDirectory>
            <skipDeploy>true</skipDeploy><!-- don't deploy site with maven-site-plugin -->
          </configuration>
          <dependencies>
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-sink-api</artifactId>
              <version>${doxiaVersion}</version>
            </dependency>
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-module-xhtml</artifactId>
              <version>${doxiaVersion}</version>
            </dependency>
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-module-xhtml5</artifactId>
              <version>${doxiaVersion}</version>
            </dependency>
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-module-apt</artifactId>
              <version>${doxiaVersion}</version>
            </dependency>
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-module-xdoc</artifactId>
              <version>${doxiaVersion}</version>
            </dependency>
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-module-fml</artifactId>
              <version>${doxiaVersion}</version>
            </dependency>
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-module-markdown</artifactId>
              <version>${doxiaVersion}</version>
            </dependency>
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-decoration-model</artifactId>
              <version>${doxiaToolsVersion}</version>
            </dependency>
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-site-renderer</artifactId>
              <version>${doxiaToolsVersion}</version>
            </dependency>
          </dependencies>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-publish-plugin</artifactId>
        <configuration>
          <content>${project.reporting.outputDirectory}</content><!-- no need for site:stage, use target/site -->
        </configuration>
        <executions>
          <execution>
            <id>scm-publish</id>
            <phase>site-deploy</phase><!-- deploy site with maven-scm-publish-plugin -->
            <goals>
              <goal>publish-scm</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0-M3</version>
        <executions>
          <execution>
            <id>enforce-java8</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <phase>site</phase>
            <configuration>
              <rules>
                <requireJavaVersion>
                  <version>1.8</version>
                </requireJavaVersion>
              </rules>
            </configuration>
          </execution>
          <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-filtered-resources</id>
            <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>
        <dependencies>
          <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant</artifactId>
            <version>1.10.7</version>
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <id>chmod</id>
            <phase>site</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <!-- mirror cgi script: see http://www.apache.org/dev/release-download-pages.html#custom -->
                <chmod file="${project.reporting.outputDirectory}/download.cgi" perm="ugo+rx"/>
                <!-- links to components directories containing releases documentation: http://maven.apache.org/developers/website/ -->
                <symlink action="recreate" overwrite="true">
                  <fileset dir="${project.reporting.outputDirectory}" includes="**/components.links"/>  
                </symlink>
              </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>
              <archiveExcludes>
                <archiveExclude>*.jar</archiveExclude>
              </archiveExcludes>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>**/*.svg</exclude>
            <exclude>**/*.ai</exclude>
            <exclude>**/*.links</exclude>
            <exclude>**/.htaccess</exclude>
            <exclude>content/apt/guides/plugin/notes.txt</exclude>
            <exclude>content/apt/guides/suggestions/non-standard-directories.txt</exclude>
            <exclude>content/filtered-resources/.htaccess</exclude>
            <exclude>content/resources/developers/svn-eol-style.txt</exclude>
            <exclude>content/resources/download.cgi</exclude>
            <exclude>content/resources/badges/*.json</exclude>
          </excludes>
        </configuration>
      </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>
        <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>team</report>
              <report>mailing-lists</report>
              <report>scm</report>            <!-- xdoc/scm.xml -->
              <report>issue-management</report> <!-- markdown/issue-management.md -->
              <report>ci-management</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.2</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>
