<?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.
-->
<!-- ===================================================================== -->
<!-- $Id$ -->
<!-- ===================================================================== -->
<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>48</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>commons-configuration2</artifactId>
  <version>2.6-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>
      <name>Gary Gregory</name>
      <id>ggregory</id>
      <email>ggregory@apache.org</email>
      <organization>Rocket Software</organization>
      <timezone>-6</timezone>
      <roles>
        <role>Java Developer</role>
      </roles>
    </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.9</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-text</artifactId>
      <version>1.8</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.3</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.12</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.4.1</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.4</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.yaml</groupId>
      <artifactId>snakeyaml</artifactId>
      <version>1.24</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.9</version>
      <optional>true</optional>
    </dependency>

    <!-- Needed for testing -->

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-dbcp2</artifactId>
      <version>2.6.0</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
      <version>2.6.2</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.hsqldb</groupId>
      <artifactId>hsqldb</artifactId>
      <version>2.4.1</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.dbunit</groupId>
      <artifactId>dbunit</artifactId>
      <version>2.6.0</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</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.0.2</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.3</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.6</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.26</slf4j.version>
    <spring.version>4.3.24.RELEASE</spring.version>

    <!-- generate report even if there are binary incompatible changes -->
    <commons.japicmp.breakBuildOnBinaryIncompatibleModifications>false</commons.japicmp.breakBuildOnBinaryIncompatibleModifications>
    <commons.japicmp.version>0.14.1</commons.japicmp.version>
    <japicmp.skip>false</japicmp.skip>
    <commons.jacoco.version>0.8.4</commons.jacoco.version>

    <!-- Commons Release Plugin -->
    <commons.bc.version>2.5</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>Gary Gregory</commons.releaseManagerName>    
    <commons.releaseManagerKey>86fdc7e2a11262cb</commons.releaseManagerKey>
  </properties>

  <build>
    <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.0.0</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>
            <failOnViolation>false</failOnViolation>
            <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.
          -->
          <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>

  </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>
    <!-- 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.
              -->
              <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>
