<?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.plugins</groupId>
    <artifactId>maven-plugins</artifactId>
    <version>33</version>
    <relativePath />
  </parent>

  <artifactId>maven-javadoc-plugin</artifactId>
  <version>3.1.1</version>
  <packaging>maven-plugin</packaging>

  <name>Apache Maven Javadoc Plugin</name>
  <description>
    The Apache Maven Javadoc Plugin is a plugin that uses the javadoc tool for
    generating javadocs for the specified project.
  </description>
  <inceptionYear>2004</inceptionYear>

  <prerequisites>
    <maven>${mavenVersion}</maven>
  </prerequisites>

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/maven-javadoc-plugin.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/maven-javadoc-plugin.git</developerConnection>
    <url>https://github.com/apache/maven-javadoc-plugin/tree/${project.scm.tag}</url>
    <tag>maven-javadoc-plugin-3.1.1</tag>
  </scm>
  <issueManagement>
    <system>jira</system>
    <url>https://issues.apache.org/jira/browse/MJAVADOC</url>
  </issueManagement>
  <ciManagement>
    <system>Jenkins</system>
    <url>https://builds.apache.org/job/maven-box/job/maven-javadoc-plugin/</url>
  </ciManagement>
  <distributionManagement>
    <site>
      <id>apache.website</id>
      <url>scm:svn:https://svn.apache.org/repos/asf/maven/website/components/${maven.site.path}</url>
    </site>
  </distributionManagement>

  <properties>
    <javaVersion>7</javaVersion>
    <mavenVersion>3.0</mavenVersion>
    <doxiaVersion>1.7</doxiaVersion>
    <doxia-sitetoolsVersion>1.7.4</doxia-sitetoolsVersion>
    <wagonVersion>1.0-beta-6</wagonVersion>
    <!-- for ITs -->
    <sitePluginVersion>3.3</sitePluginVersion>
    <projectInfoReportsPluginVersion>2.7</projectInfoReportsPluginVersion>
  </properties>

  <contributors>
    <contributor>
      <name>Ben Speakmon</name>
    </contributor>
    <contributor>
      <name>Mat Booth</name>
    </contributor>
    <contributor>
      <name>Uwe Schindler</name>
    </contributor>
    <contributor>
      <name>Eric Barboni</name>
    </contributor>
    <contributor>
      <name>Laird Nelson</name>
    </contributor>
    <contributor>
      <name>Richard Eckart de Castilho</name>
    </contributor>
    <contributor>
      <name>Kaz Nishimura</name>
    </contributor>
    <contributor>
      <name>Omair Majid</name>
    </contributor>
    <contributor>
      <name>Philippe Marschall</name>
    </contributor>
    <contributor>
      <name>Richard Sand</name>
    </contributor>
    <contributor>
      <name>Mark Raynsford</name>
    </contributor>
    <contributor>
      <name>Anton Klarén</name>
    </contributor>
    <contributor>
      <name>Kevin Risden</name>
    </contributor>
    <contributor>
      <name>Michael Stumpf</name>
    </contributor>
    <contributor>
      <name>Julian Reschke</name>
    </contributor>
  </contributors>

  <dependencies>
    <dependency> <!-- @TODO remove!! -->
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-compat</artifactId>
      <version>${mavenVersion}</version>
      <scope>test</scope>
    </dependency>
    <!-- maven -->
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-core</artifactId>
      <version>${mavenVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-model</artifactId>
      <version>${mavenVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-settings</artifactId>
      <version>${mavenVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-plugin-api</artifactId>
      <version>${mavenVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-artifact</artifactId>
      <version>${mavenVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.plugin-tools</groupId>
      <artifactId>maven-plugin-annotations</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-component-annotations</artifactId>
      <scope>provided</scope>
    </dependency>

    <!-- shared -->
    <dependency>
      <groupId>org.apache.maven.reporting</groupId>
      <artifactId>maven-reporting-api</artifactId>
      <version>3.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-archiver</artifactId>
      <version>3.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.shared</groupId>
      <artifactId>maven-invoker</artifactId>
      <version>3.0.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.shared</groupId>
      <artifactId>maven-common-artifact-filters</artifactId>
      <version>3.0.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.shared</groupId>
      <artifactId>maven-artifact-transfer</artifactId>
      <version>0.10.1</version>
    </dependency>

    <!-- Doxia -->
    <dependency>
      <groupId>org.apache.maven.doxia</groupId>
      <artifactId>doxia-sink-api</artifactId>
      <version>${doxiaVersion}</version>
    </dependency>

    <!-- Doxia-sitetools -->
    <dependency>
      <groupId>org.apache.maven.doxia</groupId>
      <artifactId>doxia-site-renderer</artifactId>
      <version>${doxia-sitetoolsVersion}</version>
    </dependency>

    <!-- wagon -->
    <dependency>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-provider-api</artifactId>
      <version>${wagonVersion}</version>
    </dependency>

    <!-- misc -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.5</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.5</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.8</version>
    </dependency>

    <dependency>
      <groupId>com.thoughtworks.qdox</groupId>
      <artifactId>qdox</artifactId>
      <version>2.0-M10</version>
    </dependency>

    <!-- Plexus -->
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-java</artifactId>
      <version>1.0.3</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-archiver</artifactId>
      <version>3.6.0</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-io</artifactId>
      <version>3.1.1</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-utils</artifactId>
      <version>3.0.24</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-interactivity-api</artifactId>
      <version>1.0-alpha-6</version>
      <exclusions>
        <exclusion>
          <groupId>plexus</groupId>
          <artifactId>plexus-utils</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.codehaus.plexus</groupId>
          <artifactId>plexus-component-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <!-- test -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit-addons</groupId>
      <artifactId>junit-addons</artifactId>
      <version>1.4</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.plugin-testing</groupId>
      <artifactId>maven-plugin-testing-harness</artifactId>
      <version>2.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty</artifactId>
      <version>6.1.25</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty-client</artifactId>
      <version>6.1.25</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>2.23.4</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.sonatype.aether</groupId>
      <artifactId>aether-connector-wagon</artifactId>
      <version>1.7</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-http</artifactId>
      <version>1.0-beta-6</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <configuration>
            <excludes combine.children="append">
              <!-- Photoshop files are binary -->
              <exclude>**/*.psd</exclude>
              <!-- Checksum files cannot contain a license header -->
              <exclude>**/*.sha1</exclude>
              <!-- Javadoc package list files cannot contain a license header -->
              <exclude>**/*element-list*</exclude>
              <exclude>**/*package-list*</exclude>
              <!-- This file is used to patch the generated Javadoc html files -->
              <exclude>src/main/resources/org/apache/maven/plugins/javadoc/frame-injection-fix.txt</exclude>
              <!-- Original POM file that is used in a repository -->
              <exclude>src/test/resources/unit/test-javadoc-test/junit/junit/3.8.1/junit-3.8.1.pom</exclude>
              <!-- temporary file that sometimes stays after a failure then completely blocks build -->
              <exclude>javadoc-options-javadoc-resources.xml</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jxr-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.codehaus.modello</groupId>
        <artifactId>modello-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>java</goal>
              <goal>xpp3-reader</goal>
              <goal>xpp3-writer</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <version>1.1.0</version>
          <models>
            <model>src/main/mdo/javadocOptions.mdo</model>
          </models>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-component-metadata</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>generate-metadata</goal>
              <goal>generate-test-metadata</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <systemProperties>
            <property>
              <name>maven.home</name>
              <value>${maven.home}</value>
            </property>
          </systemProperties>
          <environmentVariables>
            <JENKINS_MAVEN_AGENT_DISABLED>true</JENKINS_MAVEN_AGENT_DISABLED>
          </environmentVariables>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-plugin-plugin</artifactId>
        <dependencies>
          <!-- see MPLUGIN-346 -->
          <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-utils</artifactId>
            <version>3.1.1</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>run-its</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-invoker-plugin</artifactId>
            <configuration>
              <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
              <projectsDirectory>src/it/projects</projectsDirectory>
              <settingsFile>src/it/mrm/settings.xml</settingsFile>
              <pomExcludes>
                <pomExclude>MJAVADOC-181/pom.xml</pomExclude> <!-- seems to be wrong, see comment in Jira issue  -->
                <pomExclude>output-encoding/pom.xml</pomExclude>
              </pomExcludes>
              <properties>
                <maven.compiler.source>${maven.compiler.source}</maven.compiler.source>
                <maven.compiler.target>${maven.compiler.target}</maven.compiler.target>
                <!-- e.g. ensure that Java7 picks up TLSv1.2 when connecting with Central -->
                <https.protocols>${https.protocols}</https.protocols>
              </properties>
              <filterProperties>
                <mrm.3rdparty.url>${mrm.3rdparty.url}</mrm.3rdparty.url>
              </filterProperties>
              <environmentVariables>
                <JENKINS_MAVEN_AGENT_DISABLED>true</JENKINS_MAVEN_AGENT_DISABLED>
                <!-- required for MJAVADOC-538 -->
                <_JAVA_OPTIONS>-Dabc=def</_JAVA_OPTIONS>
              </environmentVariables>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>mrm-maven-plugin</artifactId>
            <version>1.1.0</version>
            <executions>
              <execution>
                <id>repository</id>
                <goals>
                  <goal>start</goal>
                  <goal>stop</goal>
                </goals>
                <configuration>
                  <repositories>
                    <mockRepo>
                      <source>src/it/mrm/repository</source>
                    </mockRepo>
                    <proxyRepo />
                  </repositories>
                </configuration>
              </execution>
              <execution>
                <id>3rdparty</id>
                <goals>
                  <goal>start</goal>
                  <goal>stop</goal>
                </goals>
                <configuration>
                  <repositories>
                    <mockRepo>
                      <source>src/it/mrm/3rdparty</source>
                    </mockRepo>
                  </repositories>
                  <propertyName>mrm.3rdparty.url</propertyName>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>reporting</id>
      <reporting>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>l10n-maven-plugin</artifactId>
            <version>1.0-alpha-2</version>
            <configuration>
              <excludes>
                <exclude>**/log4j.properties</exclude>
              </excludes>
              <locales>
                <locale>de</locale>
                <locale>fr</locale>
                <locale>nl</locale>
                <locale>sv</locale>
              </locales>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-changes-plugin</artifactId>
            <configuration>
              <!-- For JIRA-report -->
              <columnNames>Type,Key,Summary,Assignee,Status,Resolution,Fix Version</columnNames>
              <onlyCurrentVersion>true</onlyCurrentVersion>
              <resolutionIds>Fixed</resolutionIds>
              <sortColumnNames>Type,Key</sortColumnNames>
              <maxEntries>1000</maxEntries> <!-- MCHANGES-124 -->
            </configuration>
            <reportSets>
              <reportSet>
                <reports>
                  <report>jira-report</report>
                </reports>
              </reportSet>
            </reportSets>
          </plugin>
        </plugins>
      </reporting>
    </profile>
    <profile>
      <!-- simple profile which exclude units tests to be able to run only IT tests -->
      <id>only-its</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <excludes>
                <exclude>**/*Test*.java</exclude>
              </excludes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
