<?xml version="1.0"?>
<!--
  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/maven-v4_0_0.xsd">
  <parent>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-parent</artifactId>
    <version>58</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>commons-configuration2</artifactId>
  <version>2.9.1-SNAPSHOT</version>
  <name>Apache Commons Configuration</name>

  <inceptionYear>2001</inceptionYear>
  <description>
        Tools to assist in the reading of configuration/preferences files in
        various formats
    </description>

  <url>https://commons.apache.org/proper/commons-configuration/</url>

  <issueManagement>
    <system>jira</system>
    <url>https://issues.apache.org/jira/browse/CONFIGURATION</url>
  </issueManagement>

  <ciManagement>
    <system>github</system>
    <url>https://github.com/apache/commons-configuration/actions</url>
  </ciManagement>

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/commons-configuration.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/commons-configuration.git</developerConnection>
    <url>https://gitbox.apache.org/repos/asf?p=commons-configuration.git</url>
  </scm>

  <distributionManagement>
    <site>
      <id>apache.website</id>
      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-configuration/</url>
    </site>
  </distributionManagement>

  <developers>
    <developer>
      <name>Daniel Rall</name>
      <id>dlr</id>
      <email>dlr@finemaltcoding.com</email>
      <organization>CollabNet, Inc.</organization>
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>

    <developer>
      <name>Jason van Zyl</name>
      <id>jvanzyl</id>
      <email>jason@zenplex.com</email>
      <organization>Zenplex</organization>
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>

    <developer>
      <name>Martin Poeschl</name>
      <id>mpoeschl</id>
      <email>mpoeschl@marmot.at</email>
      <organization>tucana.at</organization>
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>

    <developer>
      <name>dIon Gillard</name>
      <id>dion</id>
      <email>dion@multitask.com.au</email>
      <organization>Multitask Consulting</organization>
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>

    <developer>
      <name>Henning P. Schmiedehausen</name>
      <id>henning</id>
      <email>hps@intermeta.de</email>
      <organization>INTERMETA - Gesellschaft fuer Mehrwertdienste mbH</organization>
      <timezone>2</timezone>
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>

    <developer>
      <name>Eric Pugh</name>
      <id>epugh</id>
      <email>epugh@upstate.com</email>
      <organization>upstate.com</organization>
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>

    <developer>
      <name>Brian E. Dunbar</name>
      <id>bdunbar</id>
      <email>bdunbar@dunbarconsulting.org</email>
      <organization>dunbarconsulting.org</organization>
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>

    <developer>
      <name>Emmanuel Bourg</name>
      <id>ebourg</id>
      <email>ebourg@apache.org</email>
      <organization>Ariane Software</organization>
      <timezone>+1</timezone>
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>

    <developer>
      <name>Oliver Heger</name>
      <id>oheger</id>
      <email>oheger@apache.org</email>
      <organization>Bosch Software Innovations</organization>
      <timezone>+1</timezone>
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>

    <developer>
      <name>J&#xF6;rg Schaible</name>
      <id>joehni</id>
      <email>joerg.schaible@gmx.de</email>
      <timezone>+1</timezone>
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>

    <developer>
      <name>Ralph Goers</name>
      <id>rgoers</id>
      <email>rgoers@apache.org</email>
      <organization>Intuit</organization>
      <timezone>-8</timezone>
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>

    <developer>
      <id>ggregory</id>
      <name>Gary Gregory</name>
      <email>ggregory at apache.org</email>
      <url>https://www.garygregory.com</url>
      <organization>The Apache Software Foundation</organization>
      <organizationUrl>https://www.apache.org/</organizationUrl>      
      <roles>
        <role>PMC Member</role>
      </roles>
      <timezone>America/New_York</timezone>
      <properties>
        <picUrl>https://people.apache.org/~ggregory/img/garydgregory80.png</picUrl>
      </properties>
    </developer>

    <developer>
      <name>Claude Warren</name>
      <id>claudenw</id>
      <email>claude@apache.org</email>
      <timezone>0</timezone>
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>

    <developer>
      <name>Rob Tompkins</name>
      <id>chtompki</id>
      <email>chtompki@apache.org</email>
      <timezone>-4</timezone>
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>
  </developers>

  <contributors>
    <contributor>
      <name>Konstantin Shaposhnikov</name>
      <email>ksh@scand.com</email>
      <organization>scand.com</organization>
    </contributor>

    <contributor>
      <name>Jamie M. Guillemette</name>
      <email>JMGuillemette@gmail.com</email>
      <organization>TD Bank</organization>
    </contributor>

    <contributor>
      <name>Jorge Ferrer</name>
      <email>jorge.ferrer@gmail.com</email>
      <organization></organization>
    </contributor>

    <contributor>
      <name>Gabriele Garuglieri</name>
      <email>gabriele.garuglieri@infoblu.it</email>
      <organization>Infoblu S.p.A</organization>
    </contributor>

    <contributor>
      <name>Nicolas De Loof</name>
      <email>nicolas.deloof@gmail.com</email>
      <organization>Cap Gemini</organization>
    </contributor>

    <contributor>
      <name>Oliver Kopp</name>
      <email>koppdev@gmail.com</email>
    </contributor>

    <contributor>
      <name>Dennis Kieselhorst</name>
      <email>deki@apache.org</email>
      <organization>IRIAN Deutschland</organization>
    </contributor>

    <contributor>
      <name>Raviteja Lokineni</name>
      <email>raviteja.lokineni@gmail.com</email>
    </contributor>

    <contributor>
      <name>Vincent Maurin</name>
      <email>vincent.maurin.fr@gmail.com</email>
      <organization>glispa GmbH</organization>
    </contributor>

    <contributor>
      <name>The Alchemist</name>
      <email>kap4020@gmail.com</email>
    </contributor>

    <contributor>
      <name>Pascal Essiembre</name>
      <email>pascal.essiembre@norconex.com</email>
      <organization>Norconex Inc.</organization>
      <organizationUrl>https://www.norconex.com</organizationUrl>
      <roles>
        <role>developer</role>
      </roles>
      <timezone>-4</timezone>
    </contributor>

    <contributor>
      <name>Patrick Schmidt</name>
      <email>patrick.schmidt@codecamp.de</email>
    </contributor>
  </contributors>

  <dependencies>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.12.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-text</artifactId>
      <version>1.10.0</version>
    </dependency>

    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
      <exclusions>
        <exclusion>
          <groupId>logkit</groupId>
          <artifactId>logkit</artifactId>
        </exclusion>
        <exclusion>
          <groupId>avalon-framework</groupId>
          <artifactId>avalon-framework</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
      <version>1.9.4</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.15</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-jexl</artifactId>
      <version>2.1.1</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-vfs2</artifactId>
      <version>2.9.0</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>commons-jxpath</groupId>
      <artifactId>commons-jxpath</artifactId>
      <version>1.3</version>
      <optional>true</optional>
      <exclusions>
        <exclusion>
          <groupId>xerces</groupId>
          <artifactId>xerces</artifactId>
        </exclusion>
        <exclusion>
          <groupId>ant</groupId>
          <artifactId>ant-optional</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>xml-resolver</groupId>
      <artifactId>xml-resolver</artifactId>
      <version>1.2</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
      <optional>true</optional>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
      <optional>true</optional>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.yaml</groupId>
      <artifactId>snakeyaml</artifactId>
      <version>2.0</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.15.2</version>
      <optional>true</optional>
    </dependency>

    <!-- Needed for testing -->

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-dbcp2</artifactId>
      <version>2.9.0</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.12.0</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
      <version>2.11.1</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.hsqldb</groupId>
      <artifactId>hsqldb</artifactId>
      <!--  2.6.0 requires Java 11. -->
      <version>2.5.2</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.dbunit</groupId>
      <artifactId>dbunit</artifactId>
      <version>2.7.3</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest</artifactId>
      <version>2.2</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>4.11.0</version>
      <scope>test</scope>
    </dependency>

    <!-- javax.mail only contains the API, no impl. -->
    <dependency>
      <groupId>com.sun.mail</groupId>
      <artifactId>mailapi</artifactId>
      <version>2.0.1</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-1.2-api</artifactId>
      <version>${log4j.version}</version>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>${log4j.version}</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-ext</artifactId>
      <version>${slf4j.version}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${slf4j.version}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-nop</artifactId>
      <version>${slf4j.version}</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <properties>
    <commons.componentid>configuration</commons.componentid>
    <commons.module.name>org.apache.commons.configuration2</commons.module.name>
    <commons.release.version>2.9.0</commons.release.version>
    <commons.release.desc>(Java 8)</commons.release.desc>
    <commons.release.2.name>commons-configuration-${commons.release.2.version}</commons.release.2.name>
    <commons.release.2.version>1.10</commons.release.2.version>
    <commons.release.2.desc>(old 1.x version)</commons.release.2.desc>
    <commons.jira.id>CONFIGURATION</commons.jira.id>
    <commons.jira.pid>12310467</commons.jira.pid>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>

    <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-configuration</commons.scmPubUrl>

    <!-- Explicitly declare optional dependencies for the OSGi manifest. -->
    <commons.osgi.import>
      org.apache.commons.beanutils.*;resolution:=optional,
      org.apache.commons.codec.*;resolution:=optional,
      org.apache.commons.jxpath.*;resolution:=optional,
      org.apache.xml.resolver.*;resolution:=optional,
      javax.servlet.*;resolution:=optional,
      org.apache.commons.jexl2.*;resolution:=optional,
      org.apache.commons.vfs2.*;resolution:=optional,
      org.springframework.*;resolution:=optional,
      com.fasterxml.jackson.*;resolution:=optional,
      org.yaml.snakeyaml.*;resolution:=optional,
      *
    </commons.osgi.import>
    <log4j.version>2.20.0</log4j.version>
    <slf4j.version>2.0.7</slf4j.version>
    <!-- Spring 6 requires Java 17 -->
    <spring.version>5.3.27</spring.version>

    <japicmp.skip>false</japicmp.skip>

    <!-- apache-rat-plugin 0.13 and jdepend-maven-plugin 2.0 both fail with LinkageError when generating reports 
    with maven site plugin 3.11+. However, javadoc 3.4.0+ fails with site plugin versions lower than 3.11. So, we'll 
    use slightly older site and javadoc versions here in order to be able to generate all reports. -->
    
    <commons.site-plugin.version>3.10.0</commons.site-plugin.version>

    <!-- commons.animal-sniffer.version 1.21 and 1.22 fail on Java 17. -->
    <commons.animal-sniffer.version>1.20</commons.animal-sniffer.version>

    <!-- Commons Release Plugin -->
    <commons.bc.version>2.8.0</commons.bc.version>
    <commons.rc.version>RC1</commons.rc.version>
    <commons.release.isDistModule>true</commons.release.isDistModule>
    <commons.distSvnStagingUrl>scm:svn:https://dist.apache.org/repos/dist/dev/commons/${commons.componentid}</commons.distSvnStagingUrl>
    <commons.releaseManagerName>Matt Juntunen</commons.releaseManagerName>
    <commons.releaseManagerKey>7DD53AEFEDF1C3D392B51EBE346F4FCECFB70B1A</commons.releaseManagerKey>
  </properties>

  <build>
   <defaultGoal>clean install apache-rat:check japicmp:cmp checkstyle:check spotbugs:check pmd:check pmd:cpd-check javadoc:javadoc</defaultGoal>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
      </testResource>
      <testResource>
        <directory>src/main/resources</directory>
        <includes>
          <include>*.dtd</include>
        </includes>
      </testResource>
      <!-- hack to ensure the N&L appear in jars -->
      <testResource>
        <directory>${basedir}</directory>
        <targetPath>META-INF</targetPath>
        <includes>
          <include>NOTICE.txt</include>
          <include>LICENSE.txt</include>
        </includes>
      </testResource>
    </testResources>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-publish-plugin</artifactId>
          <configuration>
            <ignorePathsToDelete>
              <ignorePathToDelete>javadocs</ignorePathToDelete>
            </ignorePathsToDelete>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <configuration>
            <configLocation>${basedir}/conf/checkstyle.xml</configLocation>
            <suppressionsLocation>${basedir}/conf/checkstyle-suppressions.xml</suppressionsLocation>
            <enableRulesSummary>false</enableRulesSummary>
            <propertyExpansion>basedir=${basedir}</propertyExpansion>
            <includeResources>false</includeResources>
            <includeTestResources>false</includeTestResources>
            <sourceDirectories>
              <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
            </sourceDirectories>
            <excludes>**/org/apache/commons/configuration2/plist/*.java</excludes>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <!-- Uncomment to enable profiling unit tests -->
          <!-- <argLine>-agentpath:"${yourkit.home}/bin/mac/libyjpagent.jnilib"</argLine> -->
          <forkMode>once</forkMode>
          <excludes>
            <exclude>**/TestWebdavConfigurationBuilder.java</exclude>
          </excludes>
          <systemPropertyVariables>
            <java.awt.headless>true</java.awt.headless>
            <org.apache.commons.logging.Log>org.apache.commons.configuration2.Logging</org.apache.commons.logging.Log>
          </systemPropertyVariables>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/bin.xml</descriptor>
            <descriptor>src/main/assembly/src.xml</descriptor>
          </descriptors>
          <tarLongFileMode>gnu</tarLongFileMode>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>javacc-maven-plugin</artifactId>
        <version>2.6</version>
        <executions>
          <execution>
            <id>javacc</id>
            <goals>
              <goal>javacc</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <!-- Uncomment to instrument with Clover
        <plugin>
        <groupId>com.atlassian.maven.plugins</groupId>
        <artifactId>maven-clover2-plugin</artifactId>
        <version>2.4.2</version>
        <configuration>
        <jdk>1.4</jdk>
        </configuration>
        <executions>
        <execution>
        <phase>pre-site</phase>
        <goals>
        <goal>instrument</goal>
        </goals>
        </execution>
        </executions>
        </plugin> -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
        <!-- Temporary fix, remove this after this has implemented in parent pom -->
        <configuration>
          <archive combine.children="append">
            <manifestEntries>
              <Automatic-Module-Name>org.apache.commons.configuration2</Automatic-Module-Name>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>src/java/org/apache/commons/configuration2/plist/*.java</exclude>
            <exclude>velocity.log</exclude>
            <exclude>src/test/resources/test.json</exclude>
            <exclude>src/test/resources/test.yaml</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <!--
            The below setting for not failing upon error stems from the fact that javacc's generated
            code.

            Javacc is responsible for a portion of the code in the package org.apache.commons.configuration2.plist,
            and only generates a portion of the package. Furthermore, the javacc parser generator
            generates javadoc that does not conform to the java 1.8 standard and causes the build to fail. For the
            sake of releasing commons-configuration-2.4.
          -->
          <source>${maven.compiler.source}</source>
          <failOnError>false</failOnError>
          <links>
            <link>https://docs.oracle.com/javase/8/docs/api/</link>
            <link>https://docs.spring.io/spring/docs/${spring.version}/javadoc-api/</link>
            <link>https://commons.apache.org/proper/commons-text/javadocs/api-release/</link>
          </links>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <configuration>
          <threshold>Normal</threshold>
          <effort>Default</effort>
          <excludeFilterFile>${basedir}/conf/findbugs-exclude-filter.xml</excludeFilterFile>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <configuration>
          <!-- Show errors in console output, especially for CI PR builds -->
          <printFailingErrors>true</printFailingErrors>
          <excludeRoots>
            <excludeRoot>target/generated-sources/javacc</excludeRoot>
          </excludeRoots>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>java9</id>
      <activation>
        <jdk>9</jdk>
      </activation>
      <properties>
        <!-- coverall version 4.3.0 does not work with java 9, see https://github.com/trautonen/coveralls-maven-plugin/issues/112 -->
        <coveralls.skip>true</coveralls.skip>
      </properties>
    </profile>
    <profile>
      <id>java16</id>
      <!-- For testing with CGLIB on Java 16 and 17-ea. -->
      <activation>
        <jdk>[16,)</jdk>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <argLine>
                --illegal-access=permit
                --add-opens java.base/java.lang=ALL-UNNAMED                     
              </argLine>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!-- Uncomment this and set the path accordingly to enable YourKit -->
    <!-- http://www.yourkit.com/docs/80/help/agent.jsp -->
    <!-- <profile>
      <id>yourkit-profile</id>
      <properties>
      <yourkit.home>/Applications/YourKit_Java_Profiler_8.0.17.app/</yourkit.home>
      </properties>
      </profile> -->
  </profiles>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changes-plugin</artifactId>
        <version>${commons.changes.version}</version>
        <configuration>
          <xmlPath>${basedir}/src/changes/changes.xml</xmlPath>
          <issueLinkTemplate>%URL%/%ISSUE%</issueLinkTemplate>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>changes-report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>checkstyle</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>src/java/org/apache/commons/configuration2/plist/*.java</exclude>
            <exclude>velocity.log</exclude>
            <exclude>src/test/resources/test.json</exclude>
            <exclude>src/test/resources/test.yaml</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <configuration>
          <threshold>Normal</threshold>
          <effort>Default</effort>
          <excludeFilterFile>${basedir}/conf/findbugs-exclude-filter.xml</excludeFilterFile>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>javadoc</report>
            </reports>
            <configuration>
              <!--
                The below setting for not failing upon error stems from the fact that javacc's generated
                code.

                Javacc is responsible for a portion of the code in the package org.apache.commons.configuration2.plist,
                and only generates a portion of the package. Furthermore, the javacc parser generator
                generates javadoc that does not conform to the java 1.8 standard and causes the build to fail. For the
                sake of releasing commons-configuration-2.4.
              -->
              <source>${maven.compiler.source}</source>
              <failOnError>false</failOnError>
              <links>
                <link>https://docs.oracle.com/javase/8/docs/api/</link>
                <link>https://docs.spring.io/spring/docs/${spring.version}/javadoc-api/</link>
                <link>https://commons.apache.org/proper/commons-text/javadocs/api-release/</link>
              </links>
              <!-- Disable Doclint since the Javadoc in the generated code does not comply. -->
              <doclint>none</doclint>
            </configuration>
          </reportSet>
        </reportSets>
        <configuration>
          <failOnError>false</failOnError>
          <links>
            <link>https://docs.oracle.com/javase/8/docs/api/</link>
            <link>https://docs.spring.io/spring/docs/${spring.version}/javadoc-api/</link>
            <link>https://commons.apache.org/proper/commons-text/javadocs/api-release/</link>
          </links>
        </configuration>
      </plugin>
    </plugins>
  </reporting>

</project>
