<?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>52</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>commons-configuration2</artifactId>
  <version>2.8.0-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>jenkins</system>
    <url>https://builds.apache.org/job/Commons-configuration/</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.9</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>1.29</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.12.4</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>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.2</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>junit-addons</groupId>
      <artifactId>junit-addons</artifactId>
      <version>1.4</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>xerces</groupId>
          <artifactId>xmlParserAPIs</artifactId>
        </exclusion>
        <exclusion>
          <groupId>xerces</groupId>
          <artifactId>xercesImpl</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>mockobjects</groupId>
      <artifactId>mockobjects-core</artifactId>
      <version>0.09</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>mockobjects</groupId>
      <artifactId>mockobjects-jdk1.4-j2ee1.3</artifactId>
      <version>0.09</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <version>4.3</version>
      <scope>test</scope>
    </dependency>

    <!-- javax.mail only contains the API, no impl. -->
    <dependency>
      <groupId>com.sun.mail</groupId>
      <artifactId>mailapi</artifactId>
      <version>1.6.6</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</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.8.0</commons.release.version>
    <commons.release.desc>(reworked 2.x version)</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>
    <slf4j.version>1.7.30</slf4j.version>
    <spring.version>4.3.30.RELEASE</spring.version>

    <commons.japicmp.version>0.15.3</commons.japicmp.version>
    <japicmp.skip>false</japicmp.skip>
    <commons.jacoco.version>0.8.7</commons.jacoco.version>
    <commons.spotbugs.version>4.2.3</commons.spotbugs.version>
    <commons.javadoc.version>3.3.0</commons.javadoc.version>
    <checkstyle.version>8.44</checkstyle.version>
    <commons.animal-sniffer.version>1.20</commons.animal-sniffer.version>

    <!-- Commons Release Plugin -->
    <commons.bc.version>2.7</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>Rob Tompkins</commons.releaseManagerName>
    <commons.releaseManagerKey>B6E73D84EA4FCC47166087253FAAD2CD5ECBB314</commons.releaseManagerKey>
  </properties>

  <build>
   <defaultGoal>clean install apache-rat:check japicmp:cmp checkstyle:check spotbugs: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>
          <version>3.1.2</version>
          <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>
          <dependencies>
            <dependency>
              <groupId>com.puppycrawl.tools</groupId>
              <artifactId>checkstyle</artifactId>
              <version>${checkstyle.version}</version>
            </dependency>
          </dependencies>
        </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>
          </links>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <version>${commons.spotbugs.version}</version>
        <configuration>
          <threshold>Normal</threshold>
          <effort>Default</effort>
          <excludeFilterFile>${basedir}/conf/findbugs-exclude-filter.xml</excludeFilterFile>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>webdav</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <dependencies>
        <dependency>
          <groupId>org.apache.jackrabbit</groupId>
          <artifactId>jackrabbit-webdav</artifactId>
          <version>1.5.2</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <forkMode>once</forkMode>
              <systemPropertyVariables>
                <java.awt.headless>true</java.awt.headless>
                <test.webdav.base>${test.webdav.base}</test.webdav.base>
              </systemPropertyVariables>
              <includes>
                <include>**/TestWebdavConfigurationBuilder.java</include>
              </includes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <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>
        <version>${commons.spotbugs.version}</version>
        <configuration>
          <threshold>Normal</threshold>
          <effort>Default</effort>
          <excludeFilterFile>${basedir}/conf/findbugs-exclude-filter.xml</excludeFilterFile>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
      </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>
              </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>
          </links>
        </configuration>
      </plugin>
    </plugins>
  </reporting>

</project>
