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

  <groupId>org.apache.maven.resolver</groupId>
  <artifactId>maven-resolver</artifactId>
  <version>2.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Maven Artifact Resolver</name>
  <description>The parent and aggregator for the repository system.</description>
  <url>https://maven.apache.org/resolver/</url>
  <inceptionYear>2010</inceptionYear>

  <contributors>
    <contributor>
      <name>Matej Cimbora</name>
    </contributor>
  </contributors>

  <modules>
    <!-- NOTE: Be sure to update the bin assembly descriptor as well if the module list changes -->
    <module>maven-resolver-api</module>
    <module>maven-resolver-spi</module>
    <module>maven-resolver-util</module>
    <module>maven-resolver-named-locks</module>
    <module>maven-resolver-named-locks-hazelcast</module>
    <module>maven-resolver-named-locks-redisson</module>
    <module>maven-resolver-impl</module>
    <module>maven-resolver-test-util</module>
    <module>maven-resolver-test-http</module>
    <module>maven-resolver-connector-basic</module>
    <module>maven-resolver-transport-classpath</module>
    <module>maven-resolver-transport-file</module>
    <module>maven-resolver-transport-jetty</module>
    <module>maven-resolver-transport-jdk-parent</module>
    <module>maven-resolver-transport-apache</module>
    <module>maven-resolver-transport-wagon</module>
    <module>maven-resolver-generator-gnupg</module>
    <module>maven-resolver-supplier-mvn3</module>
    <module>maven-resolver-supplier-mvn4</module>
    <module>maven-resolver-demos</module>
    <module>maven-resolver-tools</module>
  </modules>

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/maven-resolver.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/maven-resolver.git</developerConnection>
    <tag>maven-resolver-1.9.14</tag>
    <url>https://github.com/apache/maven-resolver/tree/${project.scm.tag}</url>
  </scm>
  <issueManagement>
    <system>jira</system>
    <url>https://issues.apache.org/jira/browse/MRESOLVER</url>
  </issueManagement>
  <ciManagement>
    <system>Jenkins</system>
    <url>https://ci-maven.apache.org/job/Maven/job/maven-box/job/maven-resolver/</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>8</javaVersion>
    <maven.compiler.release>${javaVersion}</maven.compiler.release>
    <maven.compiler.target>${javaVersion}</maven.compiler.target>
    <maven.compiler.source>${javaVersion}</maven.compiler.source>
    <surefire.redirectTestOutputToFile>true</surefire.redirectTestOutputToFile>
    <failsafe.redirectTestOutputToFile>${surefire.redirectTestOutputToFile}</failsafe.redirectTestOutputToFile>
    <maven.site.path>resolver-archives/resolver-LATEST-2.x</maven.site.path>
    <checkstyle.violation.ignore>None</checkstyle.violation.ignore>
    <sisuVersion>0.9.0.M2</sisuVersion>
    <guiceVersion>6.0.0</guiceVersion>
    <slf4jVersion>2.0.13</slf4jVersion>
    <!-- Used by Jetty Transport (client) and Test HTTP (server) -->
    <jettyVersion>10.0.20</jettyVersion>
    <!-- used by supplier and demo only -->
    <maven3Version>3.9.6</maven3Version>
    <maven4Version>4.0.0-alpha-13</maven4Version>
    <minimalMavenBuildVersion>[3.8.8,)</minimalMavenBuildVersion>
    <!-- MRESOLVER-422: keep this in sync with Javadoc plugin configuration (but cannot directly, as this below is range) -->
    <minimalJavaBuildVersion>[21,)</minimalJavaBuildVersion>
    <project.build.outputTimestamp>2024-04-26T11:50:22Z</project.build.outputTimestamp>
    <!-- site fixes: skip PMD as it does not support Java 21 -->
    <pmd.skip>true</pmd.skip>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-api</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-spi</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-util</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-named-locks</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-impl</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-connector-basic</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-transport-classpath</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-transport-file</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-transport-jetty</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-transport-jdk</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-transport-apache</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-transport-wagon</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-generator-gnupg</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-supplier-mvn3</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-supplier-mvn4</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-test-util</artifactId>
        <version>${project.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-test-http</artifactId>
        <version>${project.version}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-bom</artifactId>
        <version>${jettyVersion}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>5.11.0</version>
        <scope>test</scope>
      </dependency>

      <!-- we need override plexus-util/xml versions from parent -->
      <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-utils</artifactId>
        <version>4.0.1</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-xml</artifactId>
        <version>4.0.3</version>
      </dependency>

      <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
        <scope>provided</scope>
      </dependency>

      <dependency>
        <groupId>org.eclipse.sisu</groupId>
        <artifactId>org.eclipse.sisu.inject</artifactId>
        <version>${sisuVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.sisu</groupId>
        <artifactId>org.eclipse.sisu.plexus</artifactId>
        <version>${sisuVersion}</version>
        <exclusions>
          <exclusion>
            <groupId>javax.enterprise</groupId>
            <artifactId>cdi-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
        <version>${guiceVersion}</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>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>com.google.jimfs</groupId>
        <artifactId>jimfs</artifactId>
        <version>1.3.0</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>com.github.siom79.japicmp</groupId>
          <artifactId>japicmp-maven-plugin</artifactId>
          <version>0.21.1</version>
          <configuration>
            <oldVersion>
              <!-- We compare same module against 1.8.0 set as "baseline" -->
              <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>${project.artifactId}</artifactId>
                <version>1.9.18</version>
                <type>${project.packaging}</type>
              </dependency>
            </oldVersion>
          </configuration>
          <executions>
            <execution>
              <id>default-source-cmp</id>
              <goals>
                <goal>cmp</goal>
              </goals>
              <phase>verify</phase>
              <configuration>
                <parameter>
                  <excludes>
                    <exclude>org.eclipse.aether.RepositoryCache</exclude>
                    <exclude>org.eclipse.aether.RepositoryListener</exclude>
                    <exclude>org.eclipse.aether.RepositorySystem</exclude>
                    <exclude>org.eclipse.aether.RepositorySystemSession</exclude>
                    <exclude>org.eclipse.aether.SessionData</exclude>
                    <exclude>org.eclipse.aether.artifact.Artifact</exclude>
                    <exclude>org.eclipse.aether.artifact.ArtifactType</exclude>
                    <exclude>org.eclipse.aether.collection.CollectStepData</exclude>
                    <exclude>org.eclipse.aether.collection.DependencyCollectionContext</exclude>
                    <exclude>org.eclipse.aether.collection.DependencyGraphTransformationContext</exclude>
                    <exclude>org.eclipse.aether.collection.VersionFilter.VersionFilterContext</exclude>
                    <exclude>org.eclipse.aether.graph.DependencyCycle</exclude>
                    <exclude>org.eclipse.aether.graph.DependencyNode</exclude>
                    <exclude>org.eclipse.aether.metadata.Metadata</exclude>
                    <exclude>org.eclipse.aether.repository.ArtifactRepository</exclude>
                    <exclude>org.eclipse.aether.transfer.TransferListener</exclude>
                    <exclude>org.eclipse.aether.spi.connector.checksum.ChecksumAlgorithmFactorySelector</exclude>
                    <exclude>org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider</exclude>
                    <exclude>org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider</exclude>
                    <exclude>org.eclipse.aether.spi.connector.transport.TransporterProvider</exclude>
                    <!-- MRESOLVER-338 Dropping FileTransform API -->
                    <exclude>org.eclipse.aether.RepositorySystemSession#getFileTransformerManager()</exclude>
                    <exclude>org.eclipse.aether.DefaultRepositorySystemSession#getFileTransformerManager()</exclude>
                    <exclude>org.eclipse.aether.DefaultRepositorySystemSession#setFileTransformerManager(org.eclipse.aether.transform.FileTransformerManager)</exclude>
                    <exclude>org.eclipse.aether.AbstractForwardingRepositorySystemSession#getFileTransformerManager()</exclude>
                    <exclude>org.eclipse.aether.transform.TransformException</exclude>
                    <exclude>org.eclipse.aether.transform.FileTransformer</exclude>
                    <exclude>org.eclipse.aether.transform.FileTransformerManager</exclude>
                    <exclude>org.eclipse.aether.spi.connector.ArtifactUpload#getFileTransformer()</exclude>
                    <exclude>org.eclipse.aether.spi.connector.ArtifactUpload#setFileTransformer(org.eclipse.aether.transform.FileTransformer)</exclude>
                    <exclude>org.eclipse.aether.spi.connector.ArtifactUpload#ArtifactUpload(org.eclipse.aether.artifact.Artifact,java.io.File,org.eclipse.aether.transform.FileTransformer)</exclude>
                    <!-- MRESOLVER-389 Dropping log facade (use SLF4J instead) -->
                    <exclude>org.eclipse.aether.spi.log.Logger</exclude>
                    <exclude>org.eclipse.aether.spi.log.LoggerFactory</exclude>
                    <exclude>org.eclipse.aether.spi.log.NullLogger</exclude>
                    <exclude>org.eclipse.aether.spi.log.NullLoggerFactory</exclude>
                    <!-- MRESOLVER-409 Dropping deprecated bits/ctors -->
                    <exclude>org.eclipse.aether.spi.connector.checksum.ProvidedChecksumsSource</exclude>
                    <exclude>org.eclipse.aether.transfer.ChecksumFailureException#ChecksumFailureException(java.lang.String,java.lang.String)</exclude>
                    <exclude>org.eclipse.aether.transfer.TransferResource#TransferResource(java.lang.String,java.lang.String,java.io.File,org.eclipse.aether.RequestTrace)</exclude>
                    <exclude>org.eclipse.aether.util.repository.DefaultMirrorSelector#add(java.lang.String,java.lang.String,java.lang.String,boolean,java.lang.String,java.lang.String)</exclude>
                    <exclude>org.eclipse.aether.util.StringUtils</exclude>
                    <!-- MRESOLVER-157 Dropping ServiceLocator -->
                    <exclude>org.eclipse.aether.spi.locator.Service</exclude>
                    <exclude>org.eclipse.aether.spi.locator.ServiceLocator</exclude>
                    <!-- MRESOLVER-440 Move properties to their place and cleanup -->
                    <exclude>org.eclipse.aether.ConfigurationProperties#PERSISTED_CHECKSUMS</exclude>
                    <exclude>org.eclipse.aether.ConfigurationProperties#DEFAULT_PERSISTED_CHECKSUMS</exclude>
                  </excludes>
                  <ignoreMissingClasses>true</ignoreMissingClasses>
                  <breakBuildOnBinaryIncompatibleModifications>false</breakBuildOnBinaryIncompatibleModifications>
                  <breakBuildOnSourceIncompatibleModifications>true</breakBuildOnSourceIncompatibleModifications>
                </parameter>
              </configuration>
            </execution>
            <execution>
              <id>default-binary-cmp</id>
              <goals>
                <goal>cmp</goal>
              </goals>
              <phase>verify</phase>
              <configuration>
                <parameter>
                  <excludes>
                    <!-- MRESOLVER-338 Drop FileTransform API -->
                    <exclude>org.eclipse.aether.RepositorySystemSession#getFileTransformerManager()</exclude>
                    <exclude>org.eclipse.aether.DefaultRepositorySystemSession#getFileTransformerManager()</exclude>
                    <exclude>org.eclipse.aether.DefaultRepositorySystemSession#setFileTransformerManager(org.eclipse.aether.transform.FileTransformerManager)</exclude>
                    <exclude>org.eclipse.aether.AbstractForwardingRepositorySystemSession#getFileTransformerManager()</exclude>
                    <exclude>org.eclipse.aether.transform.TransformException</exclude>
                    <exclude>org.eclipse.aether.transform.FileTransformer</exclude>
                    <exclude>org.eclipse.aether.transform.FileTransformerManager</exclude>
                    <exclude>org.eclipse.aether.spi.connector.ArtifactUpload#getFileTransformer()</exclude>
                    <exclude>org.eclipse.aether.spi.connector.ArtifactUpload#setFileTransformer(org.eclipse.aether.transform.FileTransformer)</exclude>
                    <exclude>org.eclipse.aether.spi.connector.ArtifactUpload#ArtifactUpload(org.eclipse.aether.artifact.Artifact,java.io.File,org.eclipse.aether.transform.FileTransformer)</exclude>
                    <!-- MRESOLVER-389 Dropping log facade (use SLF4J instead) -->
                    <exclude>org.eclipse.aether.spi.log.Logger</exclude>
                    <exclude>org.eclipse.aether.spi.log.LoggerFactory</exclude>
                    <exclude>org.eclipse.aether.spi.log.NullLogger</exclude>
                    <exclude>org.eclipse.aether.spi.log.NullLoggerFactory</exclude>
                    <!-- MRESOLVER-409 Dropping deprecated bits/ctors -->
                    <exclude>org.eclipse.aether.transfer.ChecksumFailureException#ChecksumFailureException(java.lang.String,java.lang.String)</exclude>
                    <exclude>org.eclipse.aether.transfer.TransferResource#TransferResource(java.lang.String,java.lang.String,java.io.File,org.eclipse.aether.RequestTrace)</exclude>
                    <exclude>org.eclipse.aether.spi.connector.checksum.ProvidedChecksumsSource</exclude>
                    <exclude>org.eclipse.aether.util.repository.DefaultMirrorSelector#add(java.lang.String,java.lang.String,java.lang.String,boolean,java.lang.String,java.lang.String)</exclude>
                    <exclude>org.eclipse.aether.util.StringUtils</exclude>
                    <!-- MRESOLVER-157 Dropping ServiceLocator -->
                    <exclude>org.eclipse.aether.spi.locator.Service</exclude>
                    <exclude>org.eclipse.aether.spi.locator.ServiceLocator</exclude>
                    <!-- MRESOLVER-440 Move properties to their place and cleanup -->
                    <exclude>org.eclipse.aether.ConfigurationProperties#PERSISTED_CHECKSUMS</exclude>
                    <exclude>org.eclipse.aether.ConfigurationProperties#DEFAULT_PERSISTED_CHECKSUMS</exclude>
                  </excludes>
                  <ignoreMissingClasses>true</ignoreMissingClasses>
                  <breakBuildOnBinaryIncompatibleModifications>true</breakBuildOnBinaryIncompatibleModifications>
                  <breakBuildOnSourceIncompatibleModifications>false</breakBuildOnSourceIncompatibleModifications>
                </parameter>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <executions>
            <execution>
              <id>enforce-bytecode-version</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <enforceBytecodeVersion>
                    <maxJdkVersion>${maven.compiler.release}</maxJdkVersion>
                    <ignoredScopes>test</ignoredScopes>
                  </enforceBytecodeVersion>
                </rules>
                <fail>true</fail>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <configuration>
            <detectOfflineLinks>false</detectOfflineLinks>
            <linksource>true</linksource>
            <notimestamp>true</notimestamp>
            <legacyMode>true</legacyMode>
            <release>21</release>
            <links>
              <link>https://docs.oracle.com/en/java/javase/21/docs/api/</link>
            </links>
            <tags>
              <tag>
                <name>noextend</name>
                <placement>a</placement>
                <head>Restriction:</head>
              </tag>
              <tag>
                <name>noimplement</name>
                <placement>a</placement>
                <head>Restriction:</head>
              </tag>
              <tag>
                <name>noinstantiate</name>
                <placement>a</placement>
                <head>Restriction:</head>
              </tag>
              <tag>
                <name>nooverride</name>
                <placement>a</placement>
                <head>Restriction:</head>
              </tag>
              <tag>
                <name>noreference</name>
                <placement>a</placement>
                <head>Restriction:</head>
              </tag>
              <tag>
                <name>provisional</name>
                <placement>a</placement>
                <head>Provisional:</head>
              </tag>
              <!-- Configuration related -->
              <tag>
                <name>configurationSource</name>
                <placement>a</placement>
                <head>Sourced from:</head>
              </tag>
              <tag>
                <name>configurationType</name>
                <placement>a</placement>
                <head>Value type:</head>
              </tag>
              <tag>
                <name>configurationDefaultValue</name>
                <placement>a</placement>
                <head>Default value:</head>
              </tag>
              <tag>
                <name>configurationRepoIdSuffix</name>
                <placement>a</placement>
                <head>Supports Repo ID Suffix:</head>
              </tag>
            </tags>
            <groups>
              <group>
                <title>API</title>
                <packages>org.eclipse.aether*</packages>
              </group>
              <group>
                <title>SPI</title>
                <packages>org.eclipse.aether.spi*</packages>
              </group>
              <group>
                <title>Utilities</title>
                <packages>org.eclipse.aether.util*</packages>
              </group>
              <group>
                <title>Repository Connectors</title>
                <packages>org.eclipse.aether.connector*</packages>
              </group>
              <group>
                <title>Transporters</title>
                <packages>org.eclipse.aether.transport*</packages>
              </group>
              <group>
                <title>Implementation</title>
                <packages>org.eclipse.aether.impl*</packages>
              </group>
              <group>
                <title>Demo Maven Plugin</title>
                <packages>org.apache.maven.resolver.examples.maven*</packages>
              </group>
              <group>
                <title>Demo Snippets</title>
                <packages>org.apache.maven.resolver.examples*</packages>
              </group>
              <group>
                <title>Internals</title>
                <packages>org.eclipse.aether.internal*</packages>
              </group>
            </groups>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jxr-plugin</artifactId>
        </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>-Xmx128m</argLine>
            <redirectTestOutputToFile>${surefire.redirectTestOutputToFile}</redirectTestOutputToFile>
            <systemPropertyVariables>
              <java.io.tmpdir>${project.build.directory}/surefire-tmp</java.io.tmpdir>
            </systemPropertyVariables>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <configuration>
            <failIfNoTests>false</failIfNoTests>
            <argLine>-Xmx128m</argLine>
            <redirectTestOutputToFile>${failsafe.redirectTestOutputToFile}</redirectTestOutputToFile>
            <systemPropertyVariables>
              <java.io.tmpdir>${project.build.directory}/failsafe-tmp</java.io.tmpdir>
            </systemPropertyVariables>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <configuration>
            <excludes combine.children="append">
              <exclude>src/main/resources/**/*.key</exclude>
              <exclude>src/test/resources/**/*.ini</exclude>
              <exclude>src/test/resources/**/*.txt</exclude>
              <exclude>src/test/resources/ssl/*-store</exclude>
              <exclude>.gitattributes</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-maven-plugin</artifactId>
          <version>7.0.0</version>
          <executions>
            <execution>
              <id>bnd-process</id>
              <goals>
                <goal>bnd-process</goal>
              </goals>
              <configuration>
                <bnd>Bundle-SymbolicName: ${Bundle-SymbolicName}
                  # Export packages not containing the substring 'internal'
                  -exportcontents: ${removeall;${packages};${packages;NAMED;*internal*}}
                  # Reproducible build
                  -noextraheaders: true</bnd>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <configuration>
            <archive>
              <manifestEntries>
                <Automatic-Module-Name>${Automatic-Module-Name}</Automatic-Module-Name>
              </manifestEntries>
            </archive>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <proc>none</proc>
          <compilerArgs>
            <compilerArg>-Xlint:deprecation</compilerArg>
          </compilerArgs>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.eclipse.sisu</groupId>
        <artifactId>sisu-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>reporting</id>
      <reporting>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <reportSets>
              <reportSet>
                <id>aggregate</id>
                <reports>
                  <report>aggregate</report>
                </reports>
                <inherited>false</inherited>
              </reportSet>
            </reportSets>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jxr-plugin</artifactId>
            <reportSets>
              <reportSet>
                <id>aggregate</id>
                <reports>
                  <report>aggregate</report>
                </reports>
                <inherited>false</inherited>
              </reportSet>
            </reportSets>
          </plugin>
        </plugins>
      </reporting>
    </profile>
    <profile>
      <id>m2e</id>
      <activation>
        <property>
          <name>m2e.version</name>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.eclipse.m2e</groupId>
              <artifactId>lifecycle-mapping</artifactId>
              <version>1.0.0</version>
              <configuration>
                <lifecycleMappingMetadata>
                  <pluginExecutions>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.eclipse.sisu</groupId>
                        <artifactId>sisu-maven-plugin</artifactId>
                        <versionRange>[${sisuVersion},)</versionRange>
                        <goals>
                          <goal>test-index</goal>
                          <goal>main-index</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                  </pluginExecutions>
                </lifecycleMappingMetadata>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
  </profiles>
</project>
