<?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 https://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</version>
    <relativePath />
  </parent>

  <artifactId>maven</artifactId>
  <version>4.0.0-alpha-1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Apache Maven</name>
  <description>Maven is a software build management and
    comprehension tool. Based on the concept of a project object model:
    builds, dependency management, documentation creation, site
    publication, and distribution publication are all controlled from
    the declarative file. Maven can be extended by plugins to utilise a
    number of other development tools for reporting or the build
    process.
  </description>
  <url>https://maven.apache.org/ref/${project.version}/</url>
  <inceptionYear>2001</inceptionYear>

  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <classWorldsVersion>2.6.0</classWorldsVersion>
    <commonsCliVersion>1.4</commonsCliVersion>
    <commonsLangVersion>3.12.0</commonsLangVersion>
    <junitVersion>5.8.1</junitVersion>
    <mockitoVersion>3.2.0</mockitoVersion>
    <plexusVersion>2.1.0</plexusVersion>
    <plexusInterpolationVersion>1.26</plexusInterpolationVersion>
    <plexusUtilsVersion>3.3.0</plexusUtilsVersion>
    <guiceVersion>4.2.3</guiceVersion>
    <guavaVersion>30.1-jre</guavaVersion>
    <guavafailureaccessVersion>1.0.1</guavafailureaccessVersion>
    <sisuVersion>0.3.5</sisuVersion>
    <wagonVersion>3.4.3</wagonVersion>
    <jsoupVersion>1.12.1</jsoupVersion>
    <securityDispatcherVersion>2.0</securityDispatcherVersion>
    <cipherVersion>2.0</cipherVersion>
    <modelloVersion>1.11</modelloVersion>
    <jxpathVersion>1.3</jxpathVersion>
    <resolverVersion>1.7.2</resolverVersion>
    <slf4jVersion>1.7.32</slf4jVersion>
    <xmlunitVersion>2.6.4</xmlunitVersion>
    <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile>
    <!-- Control the name of the distribution and information output by mvn -->
    <distributionId>apache-maven</distributionId>
    <distributionShortName>Maven</distributionShortName>
    <distributionName>Apache Maven</distributionName>
    <maven.site.path>ref/4-LATEST</maven.site.path>
    <project.build.outputTimestamp>2021-04-05T08:12:18Z</project.build.outputTimestamp>
  </properties>

  <modules>
    <module>maven-bom</module>
    <module>maven-plugin-api</module>
    <module>maven-builder-support</module>
    <module>maven-model</module>
    <module>maven-model-builder</module>
    <module>maven-model-transform</module>
    <module>maven-core</module>
    <module>maven-settings</module>
    <module>maven-settings-builder</module>
    <module>maven-artifact</module>
    <module>maven-resolver-provider</module>
    <module>maven-repository-metadata</module>
    <module>maven-slf4j-provider</module>
    <module>maven-slf4j-wrapper</module>
    <module>maven-embedder</module>
    <module>maven-compat</module>
    <module>apache-maven</module> <!-- rename to apache-maven/maven.pom after RAT-268 -->
    <module>maven-toolchain-model</module>
    <module>maven-toolchain-builder</module>
  </modules>

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/maven.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/maven.git</developerConnection>
    <url>https://github.com/apache/maven/tree/${project.scm.tag}</url>
    <tag>master</tag>
  </scm>
  <issueManagement>
    <system>jira</system>
    <url>https://issues.apache.org/jira/browse/MNG</url>
  </issueManagement>
  <ciManagement>
    <system>Jenkins</system>
    <url>https://ci-maven.apache.org/job/Maven/job/maven-box/job/maven/</url>
  </ciManagement>
  <distributionManagement>
    <downloadUrl>https://maven.apache.org/download.html</downloadUrl>
    <site>
      <id>apache.website</id>
      <url>scm:svn:https://svn.apache.org/repos/asf/maven/website/components/${maven.site.path}</url>
    </site>
  </distributionManagement>

  <contributors>
    <contributor>
      <name>Stuart McCulloch</name>
    </contributor>
    <contributor>
      <name>Christian Schulte (MNG-2199)</name>
    </contributor>
    <contributor>
      <name>Christopher Tubbs (MNG-4226)</name>
    </contributor>
    <contributor>
      <name>Konstantin Perikov (MNG-4565)</name>
    </contributor>
    <contributor>
      <name>Sébastian Le Merdy (MNG-5613)</name>
    </contributor>
    <contributor>
      <name>Mark Ingram (MNG-5639)</name>
    </contributor>
    <contributor>
      <name>Phil Pratt-Szeliga (MNG-5645)</name>
    </contributor>
    <contributor>
      <name>Florencia Tarditti (PR 41)</name>
    </contributor>
    <contributor>
      <name>Anton Tanasenko</name>
    </contributor>
    <contributor>
      <name>Joseph Walton (MNG-5297)</name>
    </contributor>
    <contributor>
      <name>Fabiano Cipriano de Oliveira (MNG-6261)</name>
    </contributor>
    <contributor>
      <name>Mike Mol (MNG-6665)</name>
    </contributor>
    <contributor>
      <name>Martin Kanters</name>
      <organization>JPoint</organization>
    </contributor>
    <contributor>
      <name>Maarten Mulders</name>
      <organization>Info Support</organization>
    </contributor>
    <contributor>
      <name>Luc Klaassen (MNG-6065)</name>
    </contributor>
    <contributor>
      <name>Wouter Aarts (MNG-6065)</name>
    </contributor>
    <contributor>
      <name>Arturo Bernal</name>
    </contributor>
  </contributors>

  <!--bootstrap-start-comment-->
  <dependencyManagement>
    <!--bootstrap-end-comment-->
    <dependencies>
      <!--  Maven Modules -->
      <!--bootstrap-start-comment-->
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-bom</artifactId>
        <version>${project.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-compat</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-slf4j-provider</artifactId>
        <version>${project.version}</version>
      </dependency>
      <!--bootstrap-end-comment-->
      <!--  Plexus -->
      <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-utils</artifactId>
        <version>${plexusUtilsVersion}</version>
      </dependency>
      <dependency>
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
        <version>${guiceVersion}</version>
        <classifier>no_aop</classifier>
        <exclusions>
          <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <!-- This is a transitive dep of com.google.inject:guice -->
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guavaVersion}</version>
        <exclusions>
          <exclusion>
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>jsr305</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.errorprone</groupId>
            <artifactId>error_prone_annotations</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>failureaccess</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>listenablefuture</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.j2objc</groupId>
            <artifactId>j2objc-annotations</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.checkerframework</groupId>
            <artifactId>checker-qual</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <!-- This is a transitive dep of com.google.guava:guava -->
        <groupId>com.google.guava</groupId>
        <artifactId>failureaccess</artifactId>
        <version>${guavafailureaccessVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.sisu</groupId>
        <artifactId>org.eclipse.sisu.plexus</artifactId>
        <version>${sisuVersion}</version>
        <exclusions>
          <exclusion> <!-- Way too easy to conflict with plugins to be in Maven and leak in plugins -->
            <groupId>javax.enterprise</groupId>
            <artifactId>cdi-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.eclipse.sisu</groupId>
        <artifactId>org.eclipse.sisu.inject</artifactId>
        <version>${sisuVersion}</version>
      </dependency>
      <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
      </dependency>
      <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>javax.annotation-api</artifactId>
        <version>1.3.2</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-component-annotations</artifactId>
        <version>${plexusVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-classworlds</artifactId>
        <version>${classWorldsVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-interpolation</artifactId>
        <version>${plexusInterpolationVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.shared</groupId>
        <artifactId>maven-shared-utils</artifactId>
        <version>3.3.4</version>
      </dependency>
      <dependency>
        <groupId>org.fusesource.jansi</groupId>
        <artifactId>jansi</artifactId>
        <version>2.4.0</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4jVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>${slf4jVersion}</version>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.1</version>
        <optional>true</optional>
      </dependency>
      <!--  Wagon -->
      <dependency>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-provider-api</artifactId>
        <version>${wagonVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-file</artifactId>
        <version>${wagonVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-http</artifactId>
        <version>${wagonVersion}</version>
        <classifier>shaded</classifier>
      </dependency>
      <dependency>
      <!-- this is included in Wagon Http
           we are just making the dependency explicit
           in order to ease license attribution -->
      <groupId>org.jsoup</groupId>
      <artifactId>jsoup</artifactId>
      <version>${jsoupVersion}</version>
    </dependency>
      <!--  Repository -->
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-api</artifactId>
        <version>${resolverVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-spi</artifactId>
        <version>${resolverVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-impl</artifactId>
        <version>${resolverVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-util</artifactId>
        <version>${resolverVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-connector-basic</artifactId>
        <version>${resolverVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-transport-wagon</artifactId>
        <version>${resolverVersion}</version>
      </dependency>
      <!--  Commons -->
      <dependency>
        <groupId>commons-cli</groupId>
        <artifactId>commons-cli</artifactId>
        <version>${commonsCliVersion}</version>
      </dependency>
      <dependency>
        <groupId>commons-jxpath</groupId>
        <artifactId>commons-jxpath</artifactId>
        <version>${jxpathVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${commonsLangVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-sec-dispatcher</artifactId>
        <version>${securityDispatcherVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-cipher</artifactId>
        <version>${cipherVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${mockitoVersion}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.xmlunit</groupId>
        <artifactId>xmlunit-assertj</artifactId>
        <version>${xmlunitVersion}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.xmlunit</groupId>
        <artifactId>xmlunit-core</artifactId>
        <version>${xmlunitVersion}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.xmlunit</groupId>
        <artifactId>xmlunit-matchers</artifactId>
        <version>${xmlunitVersion}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-core</artifactId>
        <version>2.2</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-library</artifactId>
        <version>2.2</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-testing</artifactId>
        <version>1.0.0</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <type>pom</type>
        <version>${junitVersion}</version>
        <scope>import</scope>
      </dependency>
    </dependencies>
    <!--bootstrap-start-comment-->
  </dependencyManagement>
  <!--bootstrap-end-comment-->
  <!--bootstrap-start-comment-->
  <dependencies>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-engine</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-core</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <!--bootstrap-end-comment-->

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>3.1.2</version>
          <dependencies>
            <dependency>
              <groupId>com.puppycrawl.tools</groupId>
              <artifactId>checkstyle</artifactId>
              <version>8.41.1</version>
            </dependency>
            <dependency>
              <groupId>org.apache.maven.shared</groupId>
              <artifactId>maven-shared-resources</artifactId>
              <version>3</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.codehaus.plexus</groupId>
          <artifactId>plexus-component-metadata</artifactId>
          <version>${plexusVersion}</version>
          <executions>
            <execution>
              <goals>
                <goal>generate-metadata</goal>
                <goal>generate-test-metadata</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.eclipse.sisu</groupId>
          <artifactId>sisu-maven-plugin</artifactId>
          <version>${sisuVersion}</version>
          <executions>
            <execution>
              <goals>
                <goal>main-index</goal>
                <goal>test-index</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
            <autoVersionSubmodules>true</autoVersionSubmodules>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <argLine>-Xmx256m</argLine>
            <environmentVariables>
              <JENKINS_MAVEN_AGENT_DISABLED>true</JENKINS_MAVEN_AGENT_DISABLED>
            </environmentVariables>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.modello</groupId>
          <artifactId>modello-maven-plugin</artifactId>
          <version>${modelloVersion}</version>
          <executions>
            <execution>
              <id>modello-site-docs</id>
              <phase>pre-site</phase>
              <goals>
                <goal>xdoc</goal>
                <goal>xsd</goal>
              </goals>
            </execution>
            <execution>
              <id>modello</id>
              <goals>
                <goal>java</goal>
                <goal>xpp3-reader</goal>
                <goal>xpp3-writer</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>buildnumber-maven-plugin</artifactId>
          <version>1.4</version>
        </plugin>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <configuration>
            <excludes>
              <exclude>.asf.yaml</exclude>
              <exclude>src/test/resources*/**</exclude>
              <exclude>src/test/projects/**</exclude>
              <exclude>src/test/remote-repo/**</exclude>
              <exclude>**/*.odg</exclude>
              <!--
                ! Excluded the license files itself cause they do not have have a license of themselves.
              -->
              <exclude>src/main/appended-resources/licenses/MIT-slf4j-api-1.7.30.txt</exclude>
              <exclude>src/main/appended-resources/licenses/MIT-jsoup-1.12.1.txt</exclude>
              <exclude>src/main/appended-resources/licenses/EPL-1.0.txt</exclude>
              <exclude>src/main/appended-resources/licenses/unrecognized-javax.annotation-api-1.3.2.txt</exclude>
            </excludes>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>animal-sniffer-maven-plugin</artifactId>
        <version>1.18</version>
        <configuration>
          <signature>
            <groupId>org.codehaus.mojo.signature</groupId>
            <artifactId>java18</artifactId>
            <version>1.0</version>
          </signature>
        </configuration>
        <executions>
          <execution>
            <id>check-java-compat</id>
            <phase>process-classes</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-doap-plugin</artifactId>
        <version>1.2</version>
        <configuration>
          <asfExtOptions>
            <charter>The mission of the Apache Maven project is to create and maintain software
            libraries that provide a widely-used project build tool, targeting mainly Java
            development. Apache Maven promotes the use of dependencies via a
            standardized coordinate system, binary plugins, and a standard build
            lifecycle.</charter>
          </asfExtOptions>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes combine.children="append">
            <exclude>bootstrap/**</exclude>
            <exclude>README.bootstrap.txt</exclude>
            <exclude>README.md</exclude>
            <exclude>**/.factorypath</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0</version>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>extra-enforcer-rules</artifactId>
            <version>1.4</version>
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <goals>
              <goal>enforce</goal>
            </goals>
            <phase>validate</phase>
            <id>ensure-no-sonatype-cipher-and-sec-dispatcher</id>
            <configuration>
              <rules>
                <bannedDependencies>
                  <excludes>
                    <exclude>org.sonatype.plexus:plexus-sec-dispatcher</exclude>
                    <exclude>org.sonatype.plexus:plexus-cipher</exclude>
                  </excludes>
                  <message>
                    ensure no more org.sonatype.plexus:plexus-cipher and org.sonatype.plexus:plexus-sec-dispatcher.
                  </message>
                </bannedDependencies>
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>3.1.2</version>
        <configuration>
          <violationSeverity>info</violationSeverity>
          <suppressionsLocation>${maven.multiModuleProjectDirectory}/build/checkstyle-suppressions.xml</suppressionsLocation>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>com.puppycrawl.tools</groupId>
            <artifactId>checkstyle</artifactId>
            <version>8.41.1</version>
          </dependency>
          <dependency>
            <groupId>org.apache.maven.shared</groupId>
            <artifactId>maven-shared-resources</artifactId>
            <version>3</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>apache-release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <id>source-release-assembly</id>
                <configuration>
                  <!-- we have a dedicated distribution module -->
                  <skipAssembly>true</skipAssembly>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>reporting</id>
      <reporting>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              <tags>
                <tag>
                  <name>provisional</name>
                  <placement>tf</placement>
                  <head>Provisional:</head>
                </tag>
              </tags>
            </configuration>
            <reportSets>
              <reportSet>
                <id>aggregate</id>
                <inherited>false</inherited>
                <reports>
                  <report>aggregate</report>
                </reports>
              </reportSet>
            </reportSets>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jxr-plugin</artifactId>
            <reportSets>
              <reportSet>
                <id>aggregate</id>
                <inherited>false</inherited>
                <reports>
                  <report>aggregate</report>
                </reports>
              </reportSet>
            </reportSets>
          </plugin>
        </plugins>
      </reporting>
    </profile>
    <profile>
      <id>maven-repo-local</id>
      <activation>
        <property>
          <name>maven.repo.local</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <systemProperties combine.children="append">
                <property>
                  <!-- Pass this through to the tests (if set!) to have them pick the right repository -->
                  <name>maven.repo.local</name>
                  <value>${maven.repo.local}</value>
                </property>
              </systemProperties>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
