<?xml version="1.0" encoding="UTF-8"?>
<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">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.owasp.esapi</groupId>
    <artifactId>esapi</artifactId>
    <version>2.2.3.1</version>
    <packaging>jar</packaging>

    <distributionManagement>
        <snapshotRepository>
            <id>sonatype-nexus-snapshots</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
        <repository>
            <id>sonatype-nexus-staging</id>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
        </repository>
    </distributionManagement>

    <parent>
        <groupId>org.sonatype.oss</groupId>
        <artifactId>oss-parent</artifactId>
        <version>9</version>
    </parent>

    <licenses>
        <license>
            <name>BSD</name>
            <url>http://www.opensource.org/licenses/bsd-license.php</url>
            <comments>Code License - New BSD License</comments>
        </license>
        <license>
            <name>Creative Commons 3.0 BY-SA</name>
            <url>http://creativecommons.org/licenses/by-sa/3.0/</url>
            <comments>Content License - Create Commons 3.0 BY-SA</comments>
        </license>
    </licenses>

    <name>ESAPI</name>
    <url>https://owasp.org/www-project-enterprise-security-api/</url>
    <description>The Enterprise Security API (ESAPI) project is an OWASP project
        to create simple strong security controls for every web platform.
        Security controls are not simple to build. You can read about the
        hundreds of pitfalls for unwary developers on the OWASP web site. By
        providing developers with a set of strong controls, we aim to
        eliminate some of the complexity of creating secure web applications.
        This can result in significant cost savings across the SDLC.
    </description>

    <organization>
        <name>The Open Web Application Security Project (OWASP)</name>
        <url>https://owasp.org/</url>
    </organization>

    <mailingLists>
        <mailingList>
            <name>ESAPI-Project-Users</name>
            <subscribe>https://groups.google.com/a/owasp.org/forum/#!forum/esapi-project-users/join</subscribe>
            <unsubscribe>https://groups.google.com/a/owasp.org/forum/#!forum/esapi-project-users/unsubscribe</unsubscribe>
            <post>mailto:esapi-project-users@owasp.org</post>
            <archive>(Pre 3/25/2019) https://lists.owasp.org/pipermail/esapi-users/</archive>
            <!--This is the OWASP ESAPI mailing list for ESAPI users, regardless of programming language. For example, ESAPI users with questions about ESAPI for Java or ESAPI for PHP would both post here.-->
        </mailingList>
        <mailingList>
            <name>ESAPI-Project-Dev</name>
            <subscribe>https://groups.google.com/a/owasp.org/forum/#!forum/esapi-project-dev/join</subscribe>
            <unsubscribe>https://groups.google.com/a/owasp.org/forum/#!forum/esapi-project-dev/unsubscribe</unsubscribe>
            <post>mailto:esapi-project-dev@owasp.org</post>
            <archive>(Pre 3/25/2019) https://lists.owasp.org/pipermail/esapi-dev/</archive>
            <!--This is the OWASP ESAPI mailing list for ESAPI for Java developers. While the list is not closed, the topics of discussion are likely to be less relevant to those only using ESAPI. Note that this is the list for ESAPI for Java. Most other language implementations, such ESAPI for PHP, have their own mailing lists.-->
        </mailingList>
        <mailingList>
            <name>OWASP-ESAPI (Inactive! Archive only!)</name>
            <archive>https://lists.owasp.org/pipermail/owasp-esapi/</archive>
            <!--The name of the obsolete mailing list that previously was a combination of an ESAPI users lists and ESAP development list. While obsolete, it is still sometimes useful for searching through old historical posts. NOTE: NEW POSTS SHOULD NO LONGER BE MADE TO THIS LIST!-->
        </mailingList>
    </mailingLists>

    <scm>
        <connection>scm:git:git://github.com/ESAPI/esapi-java-legacy.git</connection>
        <developerConnection>scm:git:git@github.com:ESAPI/esapi-java-legacy.git</developerConnection>
        <url>https://github.com/ESAPI/esapi-java-legacy</url>
    </scm>

    <issueManagement>
        <system>GitHub Issue Tracking</system>
        <url>https://github.com/ESAPI/esapi-java-legacy/issues</url>
    </issueManagement>

    <developers>
        <developer>
            <name>Jeff Williams</name>
            <organization>Contrast Security</organization>
            <roles>
                <role>Project Inventor</role>
            </roles>
        </developer>
        <developer>
            <name>Kevin W. Wall</name>
            <organization>Wells Fargo</organization>
            <roles>
                <role>Project Co-owner</role>
            </roles>
        </developer>
        <developer>
          <name>Matt Seil</name>
          <organization>OWASP</organization>
          <roles>
            <role>Project Co-owner</role>
          </roles>
        </developer>
        <developer>
            <name>Chris Schmidt</name>
            <organization>Synopsys</organization>
            <roles>
                <role>Former project co-owner</role>
            </roles>
        </developer>
    </developers>

    <contributors>
        <contributor>
            <name>Dave Wichers</name>
        </contributor>
        <contributor>
            <name>Jim Manico</name>
        </contributor>
        <contributor>
            <name>Jeremiah J. Stacey</name>
        </contributor>
    </contributors>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <version.jmh>1.28</version.jmh>
        <!-- Note: powermock v2.0.8 doesn't exist. v2.0.9+ requires mockito-core v3+, which requires Java 8 -->
        <version.powermock>2.0.7</version.powermock>
        <version.spotbugs>4.2.2</version.spotbugs>
        <version.spotbugs.maven>4.2.2</version.spotbugs.maven>
        <version.surefire>3.0.0-M5</version.surefire>
    </properties>

    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <!-- Note: v3.1.0+ causes compilation errors. So would have to fix to upgrade. -->
            <version>3.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.3</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.io7m.xom</groupId>
            <artifactId>xom</artifactId>
            <version>1.2.10</version>
            <exclusions>
                <!-- excluded because we directly import newer versions. -->
                <exclusion>
                    <groupId>xalan</groupId>
                    <artifactId>xalan</artifactId>
                </exclusion>
                <exclusion>
                    <!-- xom tries to pull this in, but a newer version is in Java 7 and later
                         so we want to exclude this transitive dependency.
                    -->
                    <groupId>xerces</groupId>
                    <artifactId>xercesImpl</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>xml-apis</groupId>
                    <artifactId>xml-apis</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <!-- We need to use 1.9.4 (or later) here to address CVE-2014-0114 and CVE-2019-10086. -->
            <version>1.9.4</version>
            <!-- NOTE: commons-beanutils uses commons-collections 3.2.2. We use
                 commons-collections 4.2. Package names are different so this shouldn't
                 cause any problems as long as 3.x doesn't have any CVEs. May have to
                 rethink / exclude / etc. if there are.
                 -->
        </dependency>
        <dependency>
            <groupId>commons-configuration</groupId>
            <artifactId>commons-configuration</artifactId>
            <version>1.10</version>
            <exclusions>
                <!-- excluded because multiple dependencies import newer version. -->
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <!-- Upgrading to 1.4 causes this test case failure: [ERROR] HTTPUtilitiesTest.testGetFileUploads:259. TODO: Figure out why, and fix. -->
            <version>1.3.3</version>
            <exclusions>
                <!-- excluded because we directly import newer version. -->
                <exclusion>
                    <groupId>commons-io</groupId>
                    <artifactId>commons-io</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <!-- Using 4.2 because 4.3 requires Java 8. Trying to make sure ESAPI supports Java 7+ -->
            <version>4.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache-extras.beanshell</groupId>
            <artifactId>bsh</artifactId>
            <version>2.0b6</version>
        </dependency>
        <dependency>
            <groupId>org.owasp.antisamy</groupId>
            <artifactId>antisamy</artifactId>
            <version>1.6.3</version>
            <exclusions>
                <!-- excluded because we pick up much newer version -->
                <exclusion>
                    <groupId>commons-io</groupId>
                    <artifactId>commons-io</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.30</version>
        </dependency>
        <dependency>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
            <version>1.4.01</version>
        </dependency>

        <!--
             FORCE SPECIFIC VERSIONS OF TRANSITIVE DEPENDENCIES EXCLUDED ABOVE.
             This is to force patched versions of these libraries with known CVEs against them.
        -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <!-- Note: commons-io:2.7 and later require Java 8, so can't upgrade past 2.6 -->
            <!-- This means still possible exposure to CVE-2021-29425. -->
            <version>2.6</version>
        </dependency>


        <!-- SpotBugs dependencies -->
        <dependency>
            <groupId>com.github.spotbugs</groupId>
            <artifactId>spotbugs-annotations</artifactId>
            <version>${version.spotbugs}</version>
            <optional>true</optional>
        </dependency>

        <!-- Dependencies which are ONLY used for JUnit tests -->
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.15</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15on</artifactId>
            <version>1.68</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
            <version>1.3</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.powermock/powermock-api-mockito -->
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito2</artifactId>
            <version>${version.powermock}</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                  <!-- A subdependency: org.powermock:powermock-core:2.0.0, results in the import of: org.javassist:javassist:3.24.0-GA
                       which was compiled for Java 8 by accident. org.javassist:javassist:3.25.0-GA was released for Java 7.
                       So we exclude it here, and import the version we need below. -->
                  <groupId>org.javassist</groupId>
                  <artifactId>javassist</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- The following imported solely so we can exclude its dependency on: org.objenesis:objenesis, which conflicts with 
             another import by a dependency of powermock-api-mockito2. -->
        <dependency>
          <!-- This version is compatible with Java 7, the previous version was not (by accident). -->
          <!-- Versions 3.26.0-GA and later require Java 8. -->
          <groupId>org.javassist</groupId>
          <artifactId>javassist</artifactId>
          <version>3.25.0-GA</version>
          <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <!-- mockito-core v3.0.0+ requires Java 8 -->
            <version>2.28.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-core</artifactId>
            <version>${version.powermock}</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                  <!-- We exclude this here, because we import the version we need above, and this imports a newer version. -->
                  <groupId>org.javassist</groupId>
                  <artifactId>javassist</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-junit4</artifactId>
            <version>${version.powermock}</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-reflect</artifactId>
            <version>${version.powermock}</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.objenesis</groupId>
                    <artifactId>objenesis</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>net.bytebuddy</groupId>
                    <artifactId>byte-buddy</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>net.bytebuddy</groupId>
                    <artifactId>byte-buddy-agent</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-core</artifactId>
            <version>${version.jmh}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>3.3.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>3.1.2</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>3.0.0-M1</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>com.github.spotbugs</groupId>
                <artifactId>spotbugs-maven-plugin</artifactId>
                <version>${version.spotbugs.maven}</version>
                <dependencies>
                  <!-- Overwrite dependency on SpotBugs if you want to specify the version of SpotBugs.
                       SpotBugs itself is frequently several versions ahead of the spotbugs-maven-plugin -->
                  <dependency>
                    <groupId>com.github.spotbugs</groupId>
                    <artifactId>spotbugs</artifactId>
                    <version>${version.spotbugs}</version>
                  </dependency>
                </dependencies>
            </plugin>

            <plugin>
                <groupId>net.sourceforge.maven-taglib</groupId>
                <artifactId>maven-taglib-plugin</artifactId>
                <version>2.4</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-changelog-plugin</artifactId>
                <version>2.3</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <testSource>1.7</testSource>
                    <testTarget>1.7</testTarget>
                    <debug>true</debug>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>false</showDeprecation>
                    <compilerArgs>
                        <!-- This fails:
                                <arg>-Xmaxwarns 2000</arg>
                             Must be passed as two separate args, as shown
                             below.
                         -->
                        <arg>-Xmaxwarns</arg>
                        <arg>2000</arg>
                        <arg>
                            <!-- Eventually desire is to use just
                                    -Xlint:all
                                 here, but for now, this is just to cross off
                                 another criteria for CII Badging process.
                                 However, this is main reason we increased
                                 maxwarns above.
                            -->
                            -Xlint:all,-deprecation,-rawtypes,-unchecked
                        </arg>
                     </compilerArgs>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>3.0.0-M1</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>2.10</version>
                <configuration>
                    <downloadSources>true</downloadSources>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>3.0.0-M3</version>
                <dependencies>
                  <dependency>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>extra-enforcer-rules</artifactId>
                    <version>1.3</version>
                  </dependency>
                  <dependency>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>animal-sniffer-enforcer-rule</artifactId>
                    <!-- Updating to 1.19 causes LOTS of errors in 'mvn site' and 1.18 requires Java 8 so leaving it at 1.17. -->
                    <version>1.17</version>
                  </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>enforce-maven</id>
                        <goals>
                          <goal>enforce</goal>
                        </goals>
                        <configuration>
                          <rules>
                            <requireMavenVersion>
                              <version>[3.2.5,)</version>
                              <message>Building ESAPI 2.x now requires Maven 3.2.5 or later.</message>
                            </requireMavenVersion>
                          </rules>
                        </configuration>
                    </execution>
                    <execution>
                      <id>check-java-versions</id>
                      <phase>compile</phase>
                      <goals><goal>enforce</goal></goals>
                      <configuration>
                        <rules>
                          <dependencyConvergence/>
                          <requireJavaVersion>
                            <version>1.7</version>
                            <message>
                                ESAPI 2.x now uses the JDK1.7 for its baseline. Please make sure that your
                                JAVA_HOME environment variable is pointed to a JDK1.7 or later distribution.
                            </message>
                          </requireJavaVersion>
                          <enforceBytecodeVersion>
                            <maxJdkVersion>1.7</maxJdkVersion>
                            <ignoreOptionals>true</ignoreOptionals>
                            <ignoredScopes/> <!-- 'test' scopes not ignored so we can actually test on Java 7. -->
                            <message>Dependencies shouldn't require Java 8+</message>
                          </enforceBytecodeVersion>
                        </rules>
                        <fail>true</fail>
                      </configuration>
                    </execution>
                    <execution>
                      <id>check-java7API-signatures</id>
                      <phase>compile</phase>
                      <goals><goal>enforce</goal></goals>
                      <configuration>
                        <rules>
                          <checkSignatureRule implementation="org.codehaus.mojo.animal_sniffer.enforcer.CheckSignatureRule">
                            <signature>
                              <groupId>org.codehaus.mojo.signature</groupId>
                              <!-- Check against Java 7 API -->
                              <artifactId>java17</artifactId>
                              <version>1.0</version>
                            </signature>
                          </checkSignatureRule>
                        </rules>
                      </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-gpg-plugin</artifactId>
                <version>1.6</version>
                <executions>
                  <execution>
                    <id>sign-artifacts</id>
                    <phase>verify</phase>
                    <goals> <goal>sign</goal> </goals>
                  </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>3.0.0-M1</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-javadoc-plugin</artifactId>
               <version>3.2.0</version>
               <configuration>
                 <source>7</source>
                 <doclint>none</doclint>
               </configuration>
               <!-- generate esapi-VERSION.javadoc.jar -->
               <executions>
                 <execution>
                   <id>attach-javadocs</id>
                   <phase>package</phase>
                   <goals><goal>jar</goal></goals>
                 </execution>
               </executions>
            </plugin>

            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-jxr-plugin</artifactId>
              <version>3.0.0</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>3.14.0</version>
            </plugin>

            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-project-info-reports-plugin</artifactId>
               <version>3.1.1</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.2.0</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>3.9.1</version>
            </plugin>

            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-source-plugin</artifactId>
               <version>3.2.1</version>
               <executions>
                 <execution>
                   <id>attach-sources</id>
                   <phase>package</phase>
                   <goals><goal>jar-no-fork</goal></goals>
                 </execution>
               </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${version.surefire}</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <version>${version.surefire}</version>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <formats>
                        <format>html</format>
                        <format>xml</format>
                    </formats>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jdepend-maven-plugin</artifactId>
                <version>2.0</version>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>2.8.1</version>
            </plugin>

            <plugin>
                <groupId>org.eluder.coveralls</groupId>
                <artifactId>coveralls-maven-plugin</artifactId>
                <version>4.3.0</version>
            </plugin>

            <plugin>
                <groupId>org.owasp</groupId>
                <artifactId>dependency-check-maven</artifactId>
                <version>6.1.6</version>
                <configuration>
                    <failBuildOnCVSS>1.0</failBuildOnCVSS>
                    <suppressionFiles>./suppressions.xml</suppressionFiles>
                </configuration>
                <executions>
                    <execution>
                        <!-- This version of Dep Ck requires Java 8. So only run it if using Java 8 or greater.
                             This property set in a profile below. -->
                        <phase>${PhaseIfJava8plus}</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

    <reporting>
        <plugins>
            <plugin>
                <groupId>net.sourceforge.maven-taglib</groupId>
                <artifactId>maven-taglib-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-changelog-plugin</artifactId>
                <configuration>
                    <issueIDRegexPattern>[Ii]ssue[# ]*(\d)+</issueIDRegexPattern>
                    <issueLinkUrl>https://github.com/ESAPI/esapi-java-legacy/issues/%ISSUE%</issueLinkUrl>
                    <type>date</type>
                    <dates>
                        <!-- Should be date of previous official release -->
                        <date>2015-02-05 00:00:00</date>
                    </dates>
                </configuration>
            </plugin>
            <plugin>
                <!-- Generate /site/apidocs and /site/testapidocs -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <doclint>none</doclint>
                    <source>7</source>
                </configuration>
            </plugin>
            <plugin>
              <!-- This plugin required in reporting section, as other maven reporting plugins use the Source XRef this plugin generates.
                   Without it, you get these errors when running mvn site: [WARNING] Unable to locate Source XRef to link to - DISABLED -->
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-jxr-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <configuration>
                    <targetJdk>1.7</targetJdk>
                    <sourceEncoding>utf-8</sourceEncoding>
                    <!-- excludeFromFailureFile>exclude-pmd.properties</excludeFromFailureFile -->
                </configuration>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-project-info-reports-plugin</artifactId>
               <reportSets>
                 <reportSet>
                   <reports>
                     <report>dependency-convergence</report>
                   </reports>
                 </reportSet>
               </reportSets>
               <configuration>
                 <!-- setting this is supposed to make generating this report much faster, but didn't affect me without it, so I turned it off (DRW) -->
                 <!-- dependencyLocationsEnabled>false</dependencyLocationsEnabled -->
               </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
            </plugin>
            <plugin>
                <!--  Using this introduces these errors: Skipped "JDepend" report (jdepend-maven-plugin:2.0:generate), file "jdepend-report.html" already exists.
                      but don't know how to eliminate them, without disabling this plugin. -->
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jdepend-maven-plugin</artifactId>
            </plugin>
            <!-- Check for available updates to dependencies and report on them. -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>dependency-updates-report</report>
                            <report>plugin-updates-report</report>
                            <report>property-updates-report</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>

        </plugins>
    </reporting>

    <profiles>
        <profile>
          <id>Java8plus</id>
          <activation>
            <jdk>[1.8,)</jdk>
          </activation>
          <properties>
            <PhaseIfJava8plus>site</PhaseIfJava8plus>
          </properties>

          <reporting>
            <plugins>

            <!-- Run SpotBugs with the FindSecBugs plugin and include results in site report. 
                 Is put in this profile as SpotBugs requires Java 8+ -->
              <plugin>
                <groupId>com.github.spotbugs</groupId>
                <artifactId>spotbugs-maven-plugin</artifactId>
                <configuration>
                    <plugins>
                        <plugin>
                            <groupId>com.h3xstream.findsecbugs</groupId>
                            <artifactId>findsecbugs-plugin</artifactId>
                            <version>1.10.1</version>
                        </plugin>
                    </plugins>
                    <effort>Max</effort>
                    <relaxed>false</relaxed>
                </configuration>
              </plugin>
            </plugins>
          </reporting>

        </profile>

        <profile>
            <!-- Activate to sign jars and build distributable download. -->
            <id>dist</id>

            <!-- This profile is activated when mvn release:perform is called from the command line
                 to actually do a release. If you need this profile active for some reason outside
                 of performing a release, use mvn <command> -Pdist
            -->
            <activation>
                <property>
                    <name>performRelease</name>
                    <value>true</value>
                </property>
            </activation>

            <build>
                <plugins>

                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>

<!--
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
-->
                        <configuration>
<!--
                            <keystore>codesign.keystore</keystore>
                            <alias>owasp foundation, inc.'s godaddy.com, inc. id</alias>
                            <verify>true</verify>
-->
                            <archive>
                                <manifest>
                                    <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                                    <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                                </manifest>
                                <manifestEntries>
                                    <Sealed>true</Sealed>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </plugin>

                    <!-- For building the distribution zip file. -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <configuration>
                            <descriptors>
                                <descriptor>src/main/assembly/dist.xml</descriptor>
                            </descriptors>
                        </configuration>
                        <executions>
                            <execution>
                                <id>make-dist</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>

                    <!-- Performs a full release. See release documentation for information on how to
                         perform an ESAPI release using Maven -->
            <!--
                 mvn release:prepare was not working as expected, so I'm commenting this out and we
                 are doing all this SCM magic manually for now.  - kevin wall, 2019-04-09
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-release-plugin</artifactId>
                        <version>2.5.3</version>
                        <configuration>
                            <tagBase>https://github.com/ESAPI/esapi-java-legacy/tags</tagBase>
                        </configuration>
                    </plugin>
            -->

                </plugins>
            </build>
        </profile>
    </profiles>
</project>
