<?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.
   ====================================================================

   This software consists of voluntary contributions made by many
   individuals on behalf of the Apache Software Foundation.  For more
   information on the Apache Software Foundation, please see
   <http://www.apache.org/>.
 -->
<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</groupId>
    <artifactId>apache</artifactId>
    <version>27</version>
  </parent>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpcomponents-parent</artifactId>
  <version>14-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Apache HttpComponents Parent</name>
  <url>https://hc.apache.org/</url>
  <description>Apache components to build HTTP enabled services</description>
  <inceptionYear>2005</inceptionYear>


<!--

Version 14 - changes since 13
=====================================

org.apache.apache 23 -> 27
maven-site-plugin 3.9.1 -> 3.12.1
docbkx-maven-plugin removed
animal-sniffer-maven-plugin 1.20 -> 1.22
cobertura-maven-plugin removed
jacoco-maven-plugin removed
maven-toolchains-plugin 3.0.0 -> 3.1.0
japicmp-maven-plugin 0.15.3 -> 0.16.0
maven-javadoc-plugin 3.2.0 -> 3.4.1
maven-jxr-plugin 3.0.0 -> 3.3.0
maven-surefire-plugin 3.0.0-M5 -> 3.0.0-M7
maven-project-info-reports-plugin 3.1.0 -> 3.4.1
maven-checkstyle-plugin 3.0.0 -> 3.2.0

Version 13 - changes since 12
=====================================

animal-sniffer-maven-plugin 1.17 -> 1.20
japicmp-maven-plugin 0.14.4 -> 0.15.3
removed clirr-maven-plugin
added japicmp-maven-plugin 0.14.4

Version 12 - changes since version 11
=====================================

org.apache.apache 21 -> 23
maven-surefire-report-plugin 2.22.0 -> 2.22.1.
Added property for animal sniffer exclusions

Version 11 - changes since version 10
=====================================

org.apache.apache 18 -> 21
maven-jar-plugin 3.0.2 ->
maven-resources-plugin 3.0.2 -> 3.1.0
maven-resources-plugin 2.5 -> 3.0.0
maven-project-info-reports-plugin 2.9 -> 3.0.0
maven-site-plugin 3.6 -> 3.7.1 (allows building with Java 9)
wagon-ssh 2.10 -> 3.2.0.
Added dependency-check-maven 3.3.1
maven-javadoc-plugin 3.0.0-M1 -> 3.0.1
maven-bundle-plugin 3.3.0 -> 3.5.1
jacoco-maven-plugin 0.7.9 -> 0.8.1
maven-clean-plugin 3.0.0 -> 3.1.0
maven-compiler-plugin 3.7.0 -> 3.8.0
maven-surefire-plugin 2.22.1 -> 2.22.1

Version 10 - changes since version 9
====================================

HC style check definition 1 -> 2
maven-surefire-plugin 2.20 -> 2.21.0 (required to build with Java 9 and Java 10)

Version 9 - changes since version 8
===================================

Removed obsolete notice plugin
Removed obsolete svn-buildnumber plugin and profiles
Removed obsolete clover plugin and profile
build-helper-maven-plugin 1.12 -> 3.0.0
maven-gpg-plugin 1.4 -> 1.6
maven-assembly-plugin 3.0.0 -> 3.1.0
maven-compiler-plugin 3.6.0 -> 3.6.1
maven-compiler-plugin 3.6.1 -> 3.6.2
maven-compiler-plugin 3.6.2 -> 3.7.0
maven-surefire-plugin 2.19.1 -> 2.20
maven-resources-plugin 3.0.1 -> 3.0.2
maven-bundle-plugin 3.2.0 -> 3.3.0
jacaoco-maven-plugin 0.7.7.201606060606 -> 0.7.9
Renamed artifactId to httpcomponents-parent
Added use-toolchains profile; activated if ~/.m2/toolchains.xml exists
maven-javadoc-plugin 2.10.4 -> 3.0.0-M1 (allows building on Java 9.)
animal-sniffer-maven-plugin 1.15 -> 1.16

Version 8 - changes since version 7
===================================

Dropped definition of maven.compiler.(source|target).
These must now be defined at component level.

add profile nodoclint
maven-checkstyle-plugin 2.9.1 -> 2.17
maven-project-info-reports-plugin 2.8.1 -> 2.9
maven-clover2-plugin 3.1.11 -> 4.0.6
clirr-maven-plugin 2.7 -> 2.8
docbkx-maven-plugin 2.16 -> 2.17
maven-site-plugin 3.4 -> 3.6
maven-resources-plugin 2.7 -> 3.0.1
org.apache:apache POM 13 -> 18
animal-sniffer-maven-plugin 1.11 => 1.15
docbkx-maven-plugin 2.0.15 => 2.0.16
hc.rat.version 0.11 -> 0.12
Javadoc 2.9.1 => 2.10.4
Surefire 2.15 => 2.19
JXR 2.3 => 2.5
Clirr 2.5 => 2.7
maven-antrun-plugin 2.4.1 => 2.6
maven-assembly-plugin 2.4 => 3.0.0
maven-clean-plugin 2.5 => 3.0.0
maven-compiler-plugin 3.1 => 3.6.0
maven-deploy-plugin 2.7 => 2.8.2
build-helper-maven-plugin 1.9.1 => 1.12
maven-install-plugin 2.4 => 2.5.2
maven-jar-plugin 2.4 => 3.0.2
maven-javadoc-plugin 2.10.1 => 2.10.3
maven-release-plugin 2.4.1 => 2.5.3
maven-resources-plugin 2.6 => 2.7
maven-site-plugin 3.3 => 3.4
maven-surefire-plugin 2.19 -> 2.19.1
maven-surefire-report-plugin 2.19 -> 2.19.1
wagon-ssh 2.0 => 2.7
maven-source-plugin 2.3 => 3.0.1
docbkx-maven-plugin 2.14 => 2.15
maven-bundle-plugin 2.4.0 => 3.2.0
buildnumber-maven-plugin 1.2 => 1.4
wagon-ssh 2.7 => 2.10

Version 7 - changes since version 6
===================================

Fixed maven.compile.* properties => maven.compiler.*
Unfortunately cannot drop the configuration of compiler plugin as the Apache POM
defines the source/target directly rather than using properties.
See: https://issues.apache.org/jira/browse/MPOM-44

Also maven.compile.deprecation => maven.compiler.showDeprecation

** N.B. Child POMs may need to be adjusted when upgrading to parent pom 7 **

Added Maven pre-requisite of 3.0.3 (minimum)
Dropped maven-3 profile as no longer needed
Added Apache parent POM 13; dropped distributionManagement/repository and snapshotRepository
apache.website now uses property ${hc.site.url}
Added optional clover profile

Assembly 2.2.1 => 2.4
Antrun 1.6 => 1.7
Buildnumber 1.0 => 1.2
Bundle 2.3.7 => 2.4.0
Clean 2.4.1 => 2.5
Clirr 2.3 => 2.5
Clover2 2.6.3 => 3.1.11
Compiler 2.3.2 => 3.1
Dokbkx 2.0.13 => 2.0.14
Install 2.3.1 => 2.4
Jar 2.3.2 => 2.4
Javadoc 2.8 => 2.9.1
Project-Info 2.4 => 2.7
Release 2.2.1 => 2.4.1
Resources 2.5 => 2.6
Site 3.0 => 3.3
Source 2.1.2 => 2.2.1
Surefire 2.9 => 2.15
Surefire-Report 2.9 => 2.15
Stylecheck = 2.9.1

Changed issueManagement URL to point to JIRA group

Updated developers list

Changes since previous version (5)
==============================

Added httpasyncclient module

Buildnumber plugin changes:
 - can now be disabled (-DbuildNumber.skip)
 - defaults to SVN CLI, because javasvn currently fails with SVN 1.7 clients
 - can revert to javasvn with -Pjavasvn

Added default manifest entries to source jars

Felix bundle plugin updated: 2.3.5 -> 2.3.7 (fixes Java 1.5 issue)

Fixed JIRA link
 -->

  <issueManagement>
    <system>Jira</system>
    <!-- The following URL is for the HttpComponents group -->
    <url>https://issues.apache.org/jira/secure/BrowseProjects.jspa?selectedCategory=10280</url>
  </issueManagement>

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/httpcomponents-parent.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/httpcomponents-parent.git</developerConnection>
    <url>https://github.com/apache/httpcomponents-parent/tree/${project.scm.tag}</url>
    <tag>master</tag>
  </scm>

  <developers>
    <developer>
      <name>Michael Osipov</name>
      <id>michaelo</id>
      <email>michaelo -at- apache.org</email>
      <roles>
        <role>Committer</role>
        <role>PMC Chair</role>
        <role>PMC</role>
      </roles>
      <timezone>Europe/Berlin</timezone>
    </developer>
    <developer>
      <name>Ortwin Glueck</name>
      <id>oglueck</id>
      <email>oglueck -at- apache.org</email>
      <organization />
      <roles>
        <role>Emeritus PMC</role>
      </roles>
      <url>http://www.odi.ch/</url>
      <timezone>+1</timezone>
    </developer>
    <developer>
      <name>Oleg Kalnichevski</name>
      <id>olegk</id>
      <email>olegk -at- apache.org</email>
      <roles>
        <role>Committer</role>
        <role>PMC</role>
      </roles>
      <timezone>+1</timezone>
    </developer>
    <developer>
      <name>Asankha C. Perera</name>
      <id>asankha</id>
      <email>asankha -at- apache.org</email>
      <roles>
        <role>Committer</role>
        <role>PMC</role>
      </roles>
      <url>https://www.adroitlogic.com/</url>
      <timezone>+5.5</timezone>
    </developer>
    <developer>
      <name>Sebastian Bazley</name>
      <id>sebb</id>
      <email>sebb -at- apache.org</email>
      <roles>
        <role>Committer</role>
        <role>PMC</role>
      </roles>
      <timezone />
    </developer>
    <developer>
      <name>Erik Abele</name>
      <id>erikabele</id>
      <email>erikabele -at- apache.org</email>
      <roles>
        <role>Committer</role>
        <role>PMC</role>
      </roles>
      <url>http://www.codefaktor.de/</url>
      <timezone>+1</timezone>
    </developer>
    <developer>
      <name>Ant Elder</name>
      <id>antelder</id>
      <email>antelder -at- apache.org</email>
      <roles>
        <role>Committer</role>
        <role>PMC</role>
      </roles>
      <timezone />
    </developer>
    <developer>
      <name>Paul Fremantle</name>
      <id>pzf</id>
      <email>pzf -at- apache.org</email>
      <roles>
        <role>Committer</role>
        <role>PMC</role>
      </roles>
      <timezone />
    </developer>
    <developer>
      <name>Roland Weber</name>
      <id>rolandw</id>
      <email>rolandw -at- apache.org</email>
      <roles>
        <role>Emeritus PMC</role>
      </roles>
      <timezone>+1</timezone>
    </developer>
    <developer>
      <name>Sam Berlin</name>
      <id>sberlin</id>
      <email>sberlin -at- apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>-4</timezone>
    </developer>
    <developer>
      <name>Sean C. Sullivan</name>
      <id>sullis</id>
      <email>sullis -at- apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <name>Jonathan Moore</name>
      <id>jonm</id>
      <email>jonm -at- apache.org</email>
      <roles>
        <role>Committer</role>
        <role>PMC</role>
      </roles>
      <timezone>-5</timezone>
    </developer>
    <developer>
      <name>Gary Gregory</name>
      <id>ggregory</id>
      <email>ggregory -at- apache.org</email>
      <timezone>-8</timezone>
      <roles>
        <role>Committer</role>
        <role>PMC</role>
      </roles>
    </developer>
    <developer>
      <name>William Speirs</name>
      <id>wspeirs</id>
      <email>wspeirs at apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>-5</timezone>
    </developer>
    <developer>
      <name>Karl Wright</name>
      <id>kwright</id>
      <email>kwright -at- apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>-5</timezone>
    </developer>
    <developer>
      <name>Francois-Xavier Bonnet</name>
      <id>fx</id>
      <email>fx -at- apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>+1</timezone>
    </developer>
    <developer>
      <name>Ryan Schmitt</name>
      <id>rschmitt</id>
      <email>rschmitt@apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>America/Los_Angeles</timezone>
    </developer>
    <developer>
      <name>Arturo Bernal</name>
      <id>abernal</id>
      <email>abernal -at- apache.org</email>
      <roles>
        <role>Committer</role>
        <role>PMC</role>
      </roles>
      <timezone>Europe/Brussels</timezone>
    </developer>
  </developers>

  <contributors>
    <contributor>
      <name>Julius Davies</name>
      <email>juliusdavies -at- cucbc.com</email>
    </contributor>
    <contributor>
      <name>Andrea Selva</name>
      <email>selva.andre -at- gmail.com</email>
    </contributor>
    <contributor>
      <name>Steffen Pingel</name>
      <email>spingel -at- limewire.com</email>
    </contributor>
    <contributor>
      <name>Quintin Beukes</name>
      <email>quintin -at- last.za.net</email>
    </contributor>
    <contributor>
      <name>Marc Beyerle</name>
      <email>marc.beyerle -at- de.ibm.com</email>
    </contributor>
    <contributor>
      <name>James Abley</name>
      <email>james.abley -at- gmail.com</email>
    </contributor>
    <contributor>
      <name>Michajlo Matijkiw</name>
      <email>michajlo_matijkiw -at- comcast.com</email>
    </contributor>
  </contributors>
  <mailingLists>
    <mailingList>
      <name>HttpClient User List</name>
      <subscribe>mailto:httpclient-users-subscribe@hc.apache.org</subscribe>
      <unsubscribe>mailto:httpclient-users-unsubscribe@hc.apache.org</unsubscribe>
      <post>mailto:httpclient-users@hc.apache.org</post>
      <archive>https://lists.apache.org/list.html?httpclient-users@hc.apache.org</archive>
      <otherArchives>
        <otherArchive>https://marc.info/?l=httpclient-users</otherArchive>
        <otherArchive>https://httpclient-users.markmail.org/search/</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>HttpComponents Dev List</name>
      <subscribe>mailto:dev-subscribe@hc.apache.org</subscribe>
      <unsubscribe>mailto:dev-unsubscribe@hc.apache.org</unsubscribe>
      <post>mailto:dev@hc.apache.org</post>
      <archive>https://lists.apache.org/list.html?dev@hc.apache.org</archive>
      <otherArchives>
        <otherArchive>https://marc.info/?l=httpclient-commons-dev</otherArchive>
        <otherArchive>https://apache-hc-dev.markmail.org/search/</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>HttpComponents Commits List</name>
      <subscribe>mailto:commits-subscribe@hc.apache.org</subscribe>
      <unsubscribe>mailto:commits-unsubscribe@hc.apache.org</unsubscribe>
      <archive>https://lists.apache.org/list.html?commits@hc.apache.org</archive>
      <otherArchives>
        <otherArchive>https://marc.info/?l=httpcomponents-commits</otherArchive>
        <otherArchive>https://hc-commits.markmail.org/search/</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>Apache Announce List</name>
      <subscribe>announce-subscribe@apache.org</subscribe>
      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>
      <archive>https://mail-archives.apache.org/mod_mbox/www-announce/</archive>
      <otherArchives>
        <otherArchive>https://org-apache-announce.markmail.org/search/</otherArchive>
      </otherArchives>
    </mailingList>
  </mailingLists>

  <distributionManagement>
    <site>
      <id>apache.website</id>
      <name>Apache HttpComponents Website</name>
      <url>${hc.site.url}</url>
    </site>
  </distributionManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <!-- Should agree with config in reporting section -->
        <configuration>
          <!--
               If you wish to override this list in the component (child) pom, ensure you use
                   <excludes combine.children="merge">
               so that the child pom entries replace the parent entries
           -->
          <excludes combine.children="append">
            <exclude>.pmd</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifestEntries>
              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
    </plugins>

    <pluginManagement>
      <plugins>
        <!-- org.apache.maven.plugins, alpha order by artifact id -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <source>${maven.compiler.source}</source>
            <target>${maven.compiler.target}</target>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>${hc.javadoc.version}</version>
          <configuration>
            <!-- reduce console output. Can override with -Dquiet=false -->
            <quiet>true</quiet>
            <archive>
              <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
              </manifest>
              <manifestEntries>
                <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>
              </manifestEntries>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jxr-plugin</artifactId>
          <version>${hc.jxr.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>${hc.project-info.version}</version><!-- needed for direct goal use -->
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <executions>
            <execution>
              <id>copy-resources</id>
              <phase>pre-site</phase>
              <goals>
                <goal>copy-resources</goal>
              </goals>
              <configuration>
                <outputDirectory>${basedir}/target/site/examples</outputDirectory>
                <resources>
                  <resource>
                    <directory>src/examples</directory>
                    <filtering>false</filtering>
                  </resource>
                </resources>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.12.1</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.maven.wagon</groupId>
              <artifactId>wagon-ssh</artifactId>
              <version>3.4.1</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <configuration>
            <archive>
              <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
              </manifest>
              <manifestEntries>
                <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>
              </manifestEntries>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${hc.surefire.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-report-plugin</artifactId>
          <version>${hc.surefire.version}</version>
        </plugin>
        <!-- Other plugins, alpha order by groupId and artifactId -->
        <plugin>
          <groupId>com.github.siom79.japicmp</groupId>
          <artifactId>japicmp-maven-plugin</artifactId>
          <version>${hc.japicmp.version}</version>
          <configuration>
            <oldVersion>
              <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>${project.artifactId}</artifactId>
                <version>${api.comparison.version}</version>
                <type>jar</type>
              </dependency>
            </oldVersion>
            <newVersion>
              <file>
                <path>${project.build.directory}/${project.build.finalName}.${project.packaging}</path>
              </file>
            </newVersion>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>${hc.checkstyle.version}</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.httpcomponents</groupId>
              <artifactId>hc-stylecheck</artifactId>
              <version>2</version>
            </dependency>
          </dependencies>
          <executions>
            <execution>
              <id>validate</id>
              <phase>validate</phase>
              <configuration>
                <configLocation>hc-stylecheck/default.xml</configLocation>
                <headerLocation>hc-stylecheck/asl2.header</headerLocation>
                <consoleOutput>true</consoleOutput>
                <failsOnError>true</failsOnError>
                <linkXRef>false</linkXRef>
              </configuration>
              <goals>
                <goal>checkstyle</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>${hc.project-info.version}</version><!-- needed for mvn site -->
        <!-- in particular, we don't want mailing-list to be inherited -->
        <inherited>false</inherited>
        <reportSets>
          <reportSet>
            <reports>
              <report>team</report>
              <report>issue-management</report>
              <report>scm</report>
              <report>mailing-lists</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting>

  <profiles>

    <profile>
      <!--
        Make the version parts of the maven.compiler.target property
        available as separate properties, so that they can be used to define
        the java signature artifactId used by animal-sniffer etc.
      -->
      <id>parse-target-version</id>
      <activation>
        <property>
          <!--
             This property should always be defined.
             The intention is to ensure that the profile is always enabled.
             (activeByDefault only applies if other profiles are not enabled)
          -->
          <name>user.home</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.2.0</version>
            <executions>
              <execution>
                <id>parse-version</id>
                <!-- binds to the validate phase by default -->
                <goals>
                  <goal>parse-version</goal>
                </goals>
                <configuration>
                  <propertyPrefix>javaTarget</propertyPrefix>
                  <versionString>${maven.compiler.target}</versionString>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!--
         Runs the Animal Sniffer plugin to check that generated code does not included references
         to methods/classes etc that are not present in the standard Java runtime for the defined target version.
         To bypass the checks, define "animal.sniffer.skip" as true, or create the file "src/site/resources/profile.noanimal"
    -->

    <profile>
      <id>animal-sniffer</id>
      <activation>
        <!--  active unless the file is found -->
        <file>
          <missing>src/site/resources/profile.noanimal</missing>
        </file>
      </activation>

      <properties>
        <!-- define this as a property to allow command-line override -->
        <animal-sniffer.signature>java${javaTarget.majorVersion}${javaTarget.minorVersion}</animal-sniffer.signature>
      </properties>

      <build>
        <plugins>
          <!-- Run the Animal Sniffer checks -->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>animal-sniffer-maven-plugin</artifactId>
            <version>1.22</version>
            <executions>
              <execution>
                <id>checkAPIcompatibility</id>
                <!-- binds to the process-classes phase by default -->
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <signature>
                <groupId>org.codehaus.mojo.signature</groupId>
                <artifactId>${animal-sniffer.signature}</artifactId>
                <version>${hc.animal-sniffer.signature.version}</version>
              </signature>
              <ignores>${hc.animal-sniffer.signature.ignores}</ignores>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!--
     | Profile to allow testing of deploy phase
     | e.g.
     | mvn deploy -Ptest-deploy -Prelease -Dgpg.skip
     -->
    <profile>
      <id>test-deploy</id>
      <properties>
        <altDeploymentRepository>id::default::file:target/deploy</altDeploymentRepository>
      </properties>
    </profile>

    <profile>
      <id>nodoclint</id>
      <build>
        <plugins>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-javadoc-plugin</artifactId>
             <configuration>
               <additionalparam>-Xdoclint:none</additionalparam>
             </configuration>
           </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>lax-doclint</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              <additionalparam>-Xdoclint:-missing</additionalparam>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <!--
        Use toolchains plugin to select compiler version if the toolchains.xml file exists.
        To override this behaviour, disable the profile using: -P-use-toolchains
      -->
      <id>use-toolchains</id>
      <activation>
       <file>
         <exists>${user.home}/.m2/toolchains.xml</exists>
       </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-toolchains-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
              <toolchains>
                <jdk>
                  <version>${maven.compiler.source}</version>
                </jdk>
              </toolchains>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>toolchain</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>owasp</id>
      <reporting>
        <plugins>
          <plugin>
            <groupId>org.owasp</groupId>
            <artifactId>dependency-check-maven</artifactId>
            <version>3.3.4</version>
            <reportSets>
              <reportSet>
                <reports>
                  <report>aggregate</report>
                </reports>
              </reportSet>
            </reportSets>
          </plugin>
        </plugins>
      </reporting>
    </profile>
  </profiles>

  <properties>
    <!-- compiler source and target must now be defined at component level -->
    <maven.compiler.showDeprecation>true</maven.compiler.showDeprecation>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <project.build.outputTimestamp>2021-01-10T15:31:00Z</project.build.outputTimestamp>
    <hc.site.url>scp://people.apache.org/www/hc.apache.org/</hc.site.url>

    <!-- Define versions of all report plugins, because they should match usage in pluginManagement and modules -->
    <hc.japicmp.version>0.16.0</hc.japicmp.version>
    <hc.javadoc.version>3.4.1</hc.javadoc.version>
    <hc.surefire.version>3.0.0-M7</hc.surefire.version>
    <hc.project-info.version>3.4.1</hc.project-info.version>
    <hc.checkstyle.version>3.2.0</hc.checkstyle.version>
    <hc.jxr.version>3.3.0</hc.jxr.version>
    <hc.animal-sniffer.signature.version>1.0</hc.animal-sniffer.signature.version>
    <hc.animal-sniffer.signature.ignores />

  </properties>
</project>
