<?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>34-SNAPSHOT</version>
  </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.8</fluidoVersion><!-- used by src/xdoc/errors/404.xml.vm -->
    <doxiaVersion>1.9</doxiaVersion>
    <doxiaToolsVersion>1.9.1</doxiaToolsVersion>
  </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.8.2</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>
        <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-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>
        <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>
          </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>
    <profile>
      <id>java8-ant-ln</id>
      <activation>
        <jdk>[1.8,)</jdk>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <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.3</version><!-- to get symbolic links from Java 7 API instead of "ln" -->
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
  </profiles>
</project>
