<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>35</version>
  </parent>
  <groupId>org.apache.shiro</groupId>
  <artifactId>shiro-root</artifactId>
  <version>2.0.5</version>
  <packaging>pom</packaging>
  <name>Apache Shiro</name>
  <description>Apache Shiro is a powerful and flexible open-source security framework that cleanly handles
        authentication, authorization, enterprise session management, single sign-on and cryptography services.</description>
  <url>https://shiro.apache.org/</url>
  <inceptionYear>2004</inceptionYear>
  <developers>
    <developer>
      <id>aditzel</id>
      <name>Allan Ditzel</name>
      <email>aditzel@apache.org</email>
      <url>http://www.allanditzel.com</url>
      <organization>Apache Software Foundation</organization>
      <timezone>-5</timezone>
    </developer>
    <developer>
      <id>jhaile</id>
      <name>Jeremy Haile</name>
      <email>jhaile@apache.org</email>
      <url>http://www.jeremyhaile.com</url>
      <organization>Mobilization Labs</organization>
      <organizationUrl>http://www.mobilizationlabs.com</organizationUrl>
      <timezone>-5</timezone>
    </developer>
    <developer>
      <id>lhazlewood</id>
      <name>Les Hazlewood</name>
      <email>lhazlewood@apache.org</email>
      <url>http://www.leshazlewood.com</url>
      <organization>Stormpath</organization>
      <organizationUrl>https://www.stormpath.com</organizationUrl>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>kaosko</id>
      <name>Kalle Korhonen</name>
      <email>kaosko@apache.org</email>
      <url>https://www.tynamo.org</url>
      <organization>Apache Software Foundation</organization>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>pledbrook</id>
      <name>Peter Ledbrook</name>
      <email>p.ledbrook@cacoethes.co.uk</email>
      <url>https://www.cacoethes.co.uk/</url>
      <organization>SpringSource</organization>
      <organizationUrl>https://spring.io/</organizationUrl>
      <timezone>0</timezone>
    </developer>
    <developer>
      <id>tveil</id>
      <name>Tim Veil</name>
      <email>tveil@apache.org</email>
    </developer>
    <developer>
      <id>bdemers</id>
      <name>Brian Demers</name>
      <email>bdemers@apache.org</email>
      <url>https://stormpath.com/blog/author/bdemers</url>
      <organization>Stormpath</organization>
      <organizationUrl>https://stormpath.com/</organizationUrl>
      <roles>
        <role>PMC Chair</role>
      </roles>
      <timezone>-5</timezone>
    </developer>
    <developer>
      <id>jbunting</id>
      <name>Jared Bunting</name>
      <email>jbunting@apache.org</email>
      <organization>Apache Software Foundation</organization>
      <timezone>-6</timezone>
    </developer>
    <developer>
      <id>fpapon</id>
      <name>Francois Papon</name>
      <email>fpapon@apache.org</email>
      <organization>Yupiik</organization>
      <organizationUrl>https://www.yupiik.com/</organizationUrl>
      <timezone>+4</timezone>
    </developer>
    <developer>
      <id>bmarwell</id>
      <name>Benjamin Marwell</name>
      <email>bmarwell@apache.org</email>
      <timezone>Europe/Berlin</timezone>
    </developer>
    <developer>
      <id>lprimak</id>
      <name>Lenny Primak</name>
      <email>lprimak@apache.org</email>
      <url>https://hope.nyc.ny.us</url>
      <organization>Flow Logix</organization>
      <organizationUrl>https://www.flowlogix.com/</organizationUrl>
      <timezone>US/Central</timezone>
    </developer>
  </developers>
  <mailingLists>
    <mailingList>
      <name>Apache Shiro Users Mailing List</name>
      <subscribe>user-subscribe@shiro.apache.org</subscribe>
      <unsubscribe>user-unsubscribe@shiro.apache.org</unsubscribe>
      <post>user@shiro.apache.org</post>
    </mailingList>
    <mailingList>
      <name>Apache Shiro Developers Mailing List</name>
      <subscribe>dev-subscribe@shiro.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@shiro.apache.org</unsubscribe>
      <post>dev@shiro.apache.org</post>
    </mailingList>
  </mailingLists>
  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/shiro.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/shiro.git</developerConnection>
    <tag>shiro-root-2.0.5</tag>
    <url>https://github.com/apache/shiro/tree/${project.scm.tag}</url>
  </scm>
  <issueManagement>
    <system>Jira</system>
    <url>https://issues.apache.org/jira/browse/SHIRO</url>
  </issueManagement>
  <ciManagement>
    <system>Jenkins</system>
    <url>https://builds.apache.org/job/Shiro/</url>
  </ciManagement>
  <distributionManagement>
    <site>
      <id>shiro.website</id>
      <name>Apache Shiro Site</name>
      <url>scp://people.apache.org/www/shiro.apache.org/static/latest</url>
    </site>
    <downloadUrl>https://shiro.apache.org/download.html</downloadUrl>
  </distributionManagement>
  <properties>
    <shiro.previousVersion>2.0.0</shiro.previousVersion>
    <buildNumber>${user.name}-${maven.build.timestamp}</buildNumber>
    <project.build.outputTimestamp>2025-07-01T23:55:11Z</project.build.outputTimestamp>
    <jacoco.skip>true</jacoco.skip>
    <surefire.argLine></surefire.argLine>
    <failsafe.argLine></failsafe.argLine>
    <junit5.parallel.tests.enabled>true</junit5.parallel.tests.enabled>
    <junit5.parallel.tests.mode>concurrent</junit5.parallel.tests.mode>
    <nexus.deploy.skip>false</nexus.deploy.skip>
    <nexus-staging-profile>nexus-staging</nexus-staging-profile>
    <jacocoAgent></jacocoAgent>
    <shiro.osgi.importRange>[2, 3)</shiro.osgi.importRange>
    <jcache.osgi.importRange>[1.1,2)</jcache.osgi.importRange>
    <aspectj.version>1.9.20.1</aspectj.version>
    <commons.beanutils.version>1.11.0</commons.beanutils.version>
    <commons.cli.version>1.9.0</commons.cli.version>
    <commons.collection.version>3.2.2</commons.collection.version>
    <commons.configuration2.version>2.12.0</commons.configuration2.version>
    <commons.lang3.version>3.17.0</commons.lang3.version>
    <commons.logging.version>1.3.5</commons.logging.version>
    <commons.text.version>1.8</commons.text.version>
    <ehcache.version>2.6.11</ehcache.version>
    <hazelcast.version>5.3.8</hazelcast.version>
    <hsqldb.version>2.7.4</hsqldb.version>
    <javax.annotation.api.version>1.3.2</javax.annotation.api.version>
    <jcache.api.version>1.1.1</jcache.api.version>
    <jdk.version>11</jdk.version>
    <jetty.version>9.4.57.v20241219</jetty.version>
    <owasp.java.encoder.version>1.3.1</owasp.java.encoder.version>
    <quartz.version>2.5.0</quartz.version>
    <quartz.docs.version>2.3.0</quartz.docs.version>
    <slf4j.version>2.0.17</slf4j.version>
    <log4j.version>2.25.0</log4j.version>
    <spring.version>5.3.39</spring.version>
    <spring-boot.version>2.7.18</spring-boot.version>
    <guice.version>4.2.3</guice.version>
    <jaxrs.api.version>2.1.6</jaxrs.api.version>
    <htmlunit.version>4.13.0</htmlunit.version>
    <bouncycastle.version>1.81</bouncycastle.version>
    <easymock.version>5.6.0</easymock.version>
    <mockito.version>5.18.0</mockito.version>
    <bytebuddy.version>1.17.6</bytebuddy.version>
    <gmaven.version>4.2.0</gmaven.version>
    <groovy.version>4.0.27</groovy.version>
    <junit.version>5.13.2</junit.version>
    <junit.server.jetty.version>3.3.1</junit.server.jetty.version>
    <hibernate.version>5.6.15.Final</hibernate.version>
    <taglibs.standard.version>1.2.5</taglibs.standard.version>
    <jakarta.annotations.version>1.3.5</jakarta.annotations.version>
    <lombok.version>1.18.38</lombok.version>
    <maven.compiler.release>${jdk.version}</maven.compiler.release>
    <checkstyle.configLocation>${root.dir}/src/checkstyle.xml</checkstyle.configLocation>
    <checkstyle.suppressionsLocation>${root.dir}/src/suppressions.xml</checkstyle.suppressionsLocation>
    <fluido-skin.version>2.1.0</fluido-skin.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-lang</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-cache</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-core</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-config-core</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-config-ogdl</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-crypto-core</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-crypto-hash</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro.crypto</groupId>
        <artifactId>shiro-hashes-argon2</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro.crypto</groupId>
        <artifactId>shiro-hashes-bcrypt</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-crypto-cipher</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-event</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-web</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-servlet-plugin</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-aspectj</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-ehcache</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-quartz</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-spring</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-guice</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-hazelcast</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-jaxrs</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-all</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-core</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <classifier>tests</classifier>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-config-ogdl</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <classifier>tests</classifier>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro.integrationtests</groupId>
        <artifactId>shiro-its-support</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro.integrationtests</groupId>
        <artifactId>shiro-its-meecrowave-support</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro.integrationtests.jaxrs</groupId>
        <artifactId>shiro-its-jaxrs</artifactId>
        <version>${project.version}</version>
        <type>pom</type>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro.integrationtests.jaxrs</groupId>
        <artifactId>shiro-its-jaxrs-app</artifactId>
        <version>${project.version}</version>
        <type>war</type>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro.integrationtests.jaxrs</groupId>
        <artifactId>shiro-its-jaxrs-app</artifactId>
        <version>${project.version}</version>
        <classifier>classes</classifier>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro.integrationtests.jaxrs</groupId>
        <artifactId>shiro-its-jaxrs-tests</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.junit-pioneer</groupId>
        <artifactId>junit-pioneer</artifactId>
        <version>2.3.0</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy</artifactId>
        <version>${bytebuddy.version}</version>
      </dependency>
      <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy-agent</artifactId>
        <version>${bytebuddy.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-cli</groupId>
        <artifactId>commons-cli</artifactId>
        <version>${commons.cli.version}</version>
      </dependency>
      <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>javax.annotation-api</artifactId>
        <version>${javax.annotation.api.version}</version>
      </dependency>
      <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>${aspectj.version}</version>
      </dependency>
      <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>${aspectj.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-configuration2</artifactId>
        <version>${commons.configuration2.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.owasp.encoder</groupId>
        <artifactId>encoder</artifactId>
        <version>${owasp.java.encoder.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>${slf4j.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j2-impl</artifactId>
        <version>${log4j.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core-test</artifactId>
        <version>${log4j.version}</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>*</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.junit.platform</groupId>
            <artifactId>*</artifactId>
          </exclusion>
          <exclusion>
            <groupId>junit</groupId>
            <artifactId>*</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${log4j.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${log4j.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-jul</artifactId>
        <version>${log4j.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-to-slf4j</artifactId>
        <version>${log4j.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${slf4j.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>${commons.beanutils.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>${hsqldb.version}</version>
        <scope>runtime</scope>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.taglibs</groupId>
        <artifactId>taglibs-standard-spec</artifactId>
        <version>${taglibs.standard.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.taglibs</groupId>
        <artifactId>taglibs-standard-impl</artifactId>
        <version>${taglibs.standard.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.groovy</groupId>
        <artifactId>groovy</artifactId>
        <version>${groovy.version}</version>
      </dependency>
      <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache-core</artifactId>
        <version>${ehcache.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
          <exclusion>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>sizeof-agent</artifactId>
          </exclusion>
        </exclusions>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>com.hazelcast</groupId>
        <artifactId>hazelcast</artifactId>
        <version>${hazelcast.version}</version>
      </dependency>
      <dependency>
        <groupId>org.htmlunit</groupId>
        <artifactId>htmlunit</artifactId>
        <version>${htmlunit.version}</version>
      </dependency>
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
          <exclusion>
            <groupId>ant</groupId>
            <artifactId>ant</artifactId>
          </exclusion>
          <exclusion>
            <groupId>ant-launcher</groupId>
            <artifactId>ant-launcher</artifactId>
          </exclusion>
          <exclusion>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.security</groupId>
            <artifactId>jacc</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>jboss</groupId>
            <artifactId>jboss-cache</artifactId>
          </exclusion>
          <exclusion>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache</artifactId>
          </exclusion>
          <exclusion>
            <groupId>asm</groupId>
            <artifactId>asm-attrs</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.transaction</groupId>
            <artifactId>jta</artifactId>
          </exclusion>
        </exclusions>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-jta_1.1_spec</artifactId>
        <version>1.1.1</version>
        <scope>runtime</scope>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
        <version>${guice.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.inject.extensions</groupId>
        <artifactId>guice-multibindings</artifactId>
        <version>${guice.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.inject.extensions</groupId>
        <artifactId>guice-servlet</artifactId>
        <version>${guice.version}</version>
      </dependency>
      <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>${quartz.version}</version>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>com.github.mjeanroy</groupId>
        <artifactId>junit-servers-jetty-9</artifactId>
        <version>${junit.server.jetty.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk18on</artifactId>
        <version>${bouncycastle.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.skins</groupId>
        <artifactId>maven-fluido-skin</artifactId>
        <version>${fluido-skin.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-engine</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-core</artifactId>
      <version>3.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.assertj</groupId>
      <artifactId>assertj-core</artifactId>
      <version>3.27.3</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <version>${easymock.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>${mockito.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.groovy</groupId>
      <artifactId>groovy</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <repositories>
    <repository>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>apache.snapshots</id>
      <url>https://repository.apache.org/snapshots</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>apache.snapshots</id>
      <url>https://repository.apache.org/snapshots</url>
    </pluginRepository>
  </pluginRepositories>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <argLine>-XX:+IgnoreUnrecognizedVMOptions @{jacocoAgent} @{surefire.argLine} -Xshare:off</argLine>
            <shutdown>kill</shutdown>
            <enableProcessChecker>native</enableProcessChecker>
            <trimStackTrace>false</trimStackTrace>
            <redirectTestOutputToFile>true</redirectTestOutputToFile>
            <properties>
              <configurationParameters>junit.jupiter.execution.parallel.enabled = ${junit5.parallel.tests.enabled}
                                junit.jupiter.execution.parallel.mode.default = ${junit5.parallel.tests.mode}</configurationParameters>
            </properties>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-failsafe-plugin</artifactId>
          <configuration>
            <argLine>-XX:+IgnoreUnrecognizedVMOptions @{jacocoAgent} @{failsafe.argLine}</argLine>
            <trimStackTrace>false</trimStackTrace>
            <redirectTestOutputToFile>true</redirectTestOutputToFile>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-report-plugin</artifactId>
        </plugin>
        <plugin>
          <artifactId>maven-javadoc-plugin</artifactId>
          <configuration>
            <excludePackageNames>org.apache.shiro.samples.*</excludePackageNames>
            <linksource>true</linksource>
            <links>
              <link>https://docs.oracle.com/en/java/javase/${jdk.version}/docs/api/</link>
              <link>https://www.slf4j.org/api/</link>
              <link>https://docs.spring.io/spring-framework/docs/${spring.version}/javadoc-api/</link>
              <link>https://docs.spring.io/spring-boot/docs/${spring-boot.version}/api/</link>
              <link>https://junit.org/junit5/docs/${junit.version}/api/</link>
              <link>https://www.quartz-scheduler.org/api/${quartz.docs.version}/</link>
            </links>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.4.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-help-plugin</artifactId>
          <version>3.5.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>5.1.9</version>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>4.0.0-M16</version>
        </plugin>
        <plugin>
          <artifactId>maven-scm-publish-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <configuration>
            <excludes>
              <exclude>**/.externalToolBuilders/*</exclude>
              <exclude>**/infinitest.filters</exclude>
              <exclude>velocity.log</exclude>
              <exclude>CONTRIBUTING.md</exclude>
              <exclude>**/README.md</exclude>
              <exclude>**/*.json</exclude>
              <exclude>**/spring.factories</exclude>
              <exclude>**/org.springframework.boot.autoconfigure.AutoConfiguration.imports</exclude>
              <exclude>**/spring.provides</exclude>
              <exclude>**/*.iml</exclude>
              <exclude>**/target/**</exclude>
              <exclude>**/nb-configuration.xml</exclude>
              <exclude>**/faces-config.NavData</exclude>
              <exclude>**/org.mockito.plugins.MockMaker</exclude>
              <exclude>.mvn/*</exclude>
              <exclude>.jenkins_maven_args</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>versions-maven-plugin</artifactId>
          <version>2.18.0</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.gmavenplus</groupId>
          <artifactId>gmavenplus-plugin</artifactId>
          <version>${gmaven.version}</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.groovy</groupId>
              <artifactId>groovy-all</artifactId>
              <version>${groovy.version}</version>
              <type>pom</type>
              <scope>runtime</scope>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>3.6.1</version>
        </plugin>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.8.13</version>
        </plugin>
        <plugin>
          <groupId>com.mycila</groupId>
          <artifactId>license-maven-plugin</artifactId>
          <version>5.0.0</version>
          <configuration>
            <aggregate>true</aggregate>
            <header>${root.dir}/src/license/header.txt</header>
            <headerDefinitions>
              <headerDefinition>${root.dir}/src/license/header_format.xml</headerDefinition>
            </headerDefinitions>
            <excludes>
              <exclude>**/*.txt</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>jetty-maven-plugin</artifactId>
          <version>${jetty.version}</version>
          <configuration>
            <contextPath>/</contextPath>
            <httpConnector>
              <port>9080</port>
              <idleTimeout>60000</idleTimeout>
            </httpConnector>
            <requestLog implementation="org.eclipse.jetty.server.NCSARequestLog">
              <filename>./target/yyyy_mm_dd.request.log</filename>
              <retainDays>90</retainDays>
              <append>true</append>
              <extended>false</extended>
              <logTimeZone>GMT</logTimeZone>
            </requestLog>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.owasp</groupId>
          <artifactId>dependency-check-maven</artifactId>
          <version>12.1.3</version>
        </plugin>
        <plugin>
          <groupId>com.github.siom79.japicmp</groupId>
          <artifactId>japicmp-maven-plugin</artifactId>
          <version>0.23.1</version>
          <configuration>
            <oldVersion>
              <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>${project.artifactId}</artifactId>
                <version>${shiro.previousVersion}</version>
                <type>jar</type>
              </dependency>
            </oldVersion>
            <parameter>
              <onlyModified>true</onlyModified>
              <breakBuildOnSourceIncompatibleModifications>true</breakBuildOnSourceIncompatibleModifications>
              <breakBuildOnBinaryIncompatibleModifications>true</breakBuildOnBinaryIncompatibleModifications>
              <breakBuildBasedOnSemanticVersioning>false</breakBuildBasedOnSemanticVersioning>
            </parameter>
          </configuration>
        </plugin>
        <plugin>
          <groupId>dev.aspectj</groupId>
          <artifactId>aspectj-maven-plugin</artifactId>
          <version>1.14.1</version>
          <executions>
            <execution>
              <id>aspectj-compile</id>
              <goals>
                <goal>compile</goal>
                <goal>test-compile</goal>
              </goals>
            </execution>
          </executions>
          <dependencies>
            <dependency>
              <groupId>org.aspectj</groupId>
              <artifactId>aspectjtools</artifactId>
              <version>${aspectj.version}</version>
            </dependency>
          </dependencies>
          <configuration>
            <source>${maven.compiler.release}</source>
            <target>${maven.compiler.release}</target>
            <complianceLevel>${maven.compiler.release}</complianceLevel>
            <showWeaveInfo>true</showWeaveInfo>
            <forceAjcCompile>true</forceAjcCompile>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-shade-plugin</artifactId>
          <executions>
            <execution>
              <id>jakarta</id>
              <phase>package</phase>
              <goals>
                <goal>shade</goal>
              </goals>
              <configuration>
                <minimizeJar>false</minimizeJar>
                <shadedArtifactAttached>true</shadedArtifactAttached>
                <shadedClassifierName>jakarta</shadedClassifierName>
                <createDependencyReducedPom>false</createDependencyReducedPom>
                <transformers>
                  <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                  <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer" />
                </transformers>
                <artifactSet>
                  <includes>
                    <include>${project.groupId}:${project.artifactId}</include>
                  </includes>
                </artifactSet>
                <relocations>
                  <relocation>
                    <pattern>javax.annotation</pattern>
                    <shadedPattern>jakarta.annotation</shadedPattern>
                    <excludes>
                      <exclude>javax.annotation.processing.**</exclude>
                    </excludes>
                  </relocation>
                  <relocation>
                    <pattern>javax.enterprise</pattern>
                    <shadedPattern>jakarta.enterprise</shadedPattern>
                    <excludes>
                      <exclude>javax.enterprise.deploy.**</exclude>
                    </excludes>
                  </relocation>
                  <relocation>
                    <pattern>javax.inject</pattern>
                    <shadedPattern>jakarta.inject</shadedPattern>
                  </relocation>
                  <relocation>
                    <pattern>javax.json</pattern>
                    <shadedPattern>jakarta.json</shadedPattern>
                  </relocation>
                  <relocation>
                    <pattern>javax.servlet.http.HttpSessionContext</pattern>
                    <shadedPattern>org.apache.shiro.web.servlet.HttpSessionContext</shadedPattern>
                  </relocation>
                  <relocation>
                    <pattern>javax.servlet</pattern>
                    <shadedPattern>jakarta.servlet</shadedPattern>
                  </relocation>
                  <relocation>
                    <pattern>javax.websocket</pattern>
                    <shadedPattern>jakarta.websocket</shadedPattern>
                  </relocation>
                  <relocation>
                    <pattern>javax.ws.rs</pattern>
                    <shadedPattern>jakarta.ws.rs</shadedPattern>
                  </relocation>
                </relocations>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>3.6.0</version>
          <executions>
            <execution>
              <phase>validate</phase>
              <goals>
                <goal>checkstyle</goal>
              </goals>
            </execution>
          </executions>
          <dependencies>
            <dependency>
              <groupId>com.puppycrawl.tools</groupId>
              <artifactId>checkstyle</artifactId>
              <version>10.26.1</version>
            </dependency>
          </dependencies>
          <configuration>
            <configLocation>${checkstyle.configLocation}</configLocation>
            <suppressionsLocation>${checkstyle.suppressionsLocation}</suppressionsLocation>
            <linkXRef>true</linkXRef>
            <consoleOutput>true</consoleOutput>
            <failsOnError>true</failsOnError>
            <failOnViolation>true</failOnViolation>
            <includeTestSourceDirectory>true</includeTestSourceDirectory>
            <enableRulesSummary>true</enableRulesSummary>
            <resourceExcludes>test-keystore.jks,test-keystore.pem</resourceExcludes>
            <propertyExpansion>root.dir=${root.dir}</propertyExpansion>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <executions>
          <execution>
            <id>rat-check</id>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.commonjava.maven.plugins</groupId>
        <artifactId>directory-maven-plugin</artifactId>
        <version>1.0</version>
        <executions>
          <execution>
            <id>directories</id>
            <phase>validate</phase>
            <goals>
              <goal>directory-of</goal>
            </goals>
            <configuration>
              <property>root.dir</property>
              <project>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-root</artifactId>
              </project>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-checkstyle-plugin</artifactId>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <showWarnings>true</showWarnings>
          <compilerArgs>
            <arg>-Xlint:deprecation</arg>
            <arg>-Xlint:unchecked</arg>
          </compilerArgs>
          <annotationProcessorPaths>
            <annotationProcessorPath>
              <groupId>org.aspectj</groupId>
              <artifactId>aspectjweaver</artifactId>
              <version>${aspectj.version}</version>
            </annotationProcessorPath>
          </annotationProcessorPaths>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-failsafe-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>prepare-agent</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
          <execution>
            <id>prepare-agent-integration</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>prepare-agent-integration</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <includes>
            <include>org/apache/shiro/**</include>
          </includes>
          <excludes>
            <exclude>**/*$$FastClassBy*$$*</exclude>
            <exclude>**/*$$EnhancerBy*CGLIB$$*</exclude>
            <exclude>**/*$MockitoMock$*</exclude>
            <exclude>**/*$HibernateProxy$*</exclude>
            <exclude>org/apache/shiro/samples/guice/SampleShiroGuiceBootstrap</exclude>
            <exclude>org/apache/shiro/samples/guice/SampleShiroServletModule</exclude>
            <exclude>org/apache/shiro/**/*Test</exclude>
            <exclude>org/apache/shiro/**/*Test$*</exclude>
            <exclude>org/apache/shiro/**/*IT</exclude>
            <exclude>org/apache/shiro/**/*IT$*</exclude>
            <exclude>org/apache/shiro/testing/jakarta/ee/PropertyPrincipal</exclude>
            <exclude>org/apache/shiro/testing/cdi/ComponentInjectionBean</exclude>
            <exclude>org/apache/shiro/**/__EJB31_Generated*</exclude>
            <exclude>org/apache/shiro/**/Deployments</exclude>
          </excludes>
          <propertyName>jacocoAgent</propertyName>
          <classDumpDir>${root.dir}/target/classes</classDumpDir>
          <fileSets>
            <fileSet>
              <directory>${project.basedir}</directory>
              <includes>
                <include>**/*.exec</include>
              </includes>
            </fileSet>
          </fileSets>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.gmavenplus</groupId>
        <artifactId>gmavenplus-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>addTestSources</goal>
              <goal>generateTestStubs</goal>
              <goal>compileTests</goal>
              <goal>removeTestStubs</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <version>3.2.1</version>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>create</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <doCheck>false</doCheck>
          <doUpdate>false</doUpdate>
          <revisionOnScmFailure>${project.version}</revisionOnScmFailure>
          <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
            </manifest>
            <manifestEntries>
              <Automatic-Module-Name>org.apache.shiro.${module.name}</Automatic-Module-Name>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-doap-plugin</artifactId>
        <version>1.2</version>
        <executions>
          <execution>
            <id>site</id>
            <phase>pre-site</phase>
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
        <inherited>false</inherited>
        <configuration>
          <artifact></artifact>
          <doapOptions>
            <programmingLanguage>Java</programmingLanguage>
            <category>library, web-framework</category>
            <bugDatabase>${project.issueManagement.url}</bugDatabase>
            <created>${project.inceptionYear}-01-01</created>
            <description>${project.description}</description>
            <downloadPage>${project.distributionManagement.downloadUrl}</downloadPage>
            <homepage>${project.url}</homepage>
            <mailingList>${project.url}/mail-lists.html</mailingList>
            <name>${project.name}</name>
            <shortdesc>A simple to use Java Security Framework.</shortdesc>
            <vendor>${project.organization.name}</vendor>
          </doapOptions>
          <asfExtOptions>
            <charter>The mission of the Apache Shiro project is to create and maintain an easy to use authentication and authorization framework.</charter>
            <pmc>${project.url}</pmc>
            <name>${project.name}</name>
          </asfExtOptions>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <pushChanges>false</pushChanges>
          <localCheckout>true</localCheckout>
          <autoVersionSubmodules>true</autoVersionSubmodules>
          <preparationGoals>validate</preparationGoals>
          <preparationProfiles>skip-checkstyle</preparationProfiles>
          <goals>deploy</goals>
          <releaseProfiles>docs,apache-release,${nexus-staging-profile}</releaseProfiles>
          <mavenExecutorId>forked-path</mavenExecutorId>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-deploy-plugin</artifactId>
        <configuration>
          <deployAtEnd>true</deployAtEnd>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-maven</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>[3.5.0,4)</version>
                </requireMavenVersion>
                <requireJavaVersion>
                  <version>[11,)</version>
                </requireJavaVersion>
              </rules>
            </configuration>
          </execution>
          <execution>
            <id>enforce-forbidden-dependencies</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <fail>true</fail>
              <rules>
                <bannedDependencies>
                  <excludes>
                    <exclude>*:powermock-api-easymock</exclude>
                    <exclude>*:powermock-module-junit4</exclude>
                  </excludes>
                </bannedDependencies>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.github.siom79.japicmp</groupId>
        <artifactId>japicmp-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>japicmp</id>
            <phase>verify</phase>
            <goals>
              <goal>cmp</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <reporting>
    <plugins>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <reportSets>
          <reportSet>
            <id>javadoc-aggregate</id>
            <reports>
              <report>aggregate-no-fork</report>
            </reports>
          </reportSet>
        </reportSets>
        <inherited>false</inherited>
        <configuration>
          <top>&lt;!-- Matomo -->
&lt;script>
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  /* We explicitly disable cookie tracking to avoid privacy issues */
  _paq.push(['disableCookies']);
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="//matomo.privacy.apache.org/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '2']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
&lt;/script>
&lt;!-- End Matomo Code --></top>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>3.6.0</version>
        <reportSets>
          <reportSet>
            <reports>
              <report>jxr-no-fork</report>
            </reports>
          </reportSet>
        </reportSets>
        <configuration>
          <aggregate>true</aggregate>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>3.26.0</version>
      </plugin>
      <plugin>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <configuration>
          <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <version>0.16.1</version>
        <inherited>false</inherited>
        <configuration>
          <excludes>
            <exclude>**/.externalToolBuilders/*</exclude>
            <exclude>**/infinitest.filters</exclude>
            <exclude>velocity.log</exclude>
            <exclude>CONTRIBUTING.md</exclude>
            <exclude>**/README.md</exclude>
            <exclude>**/*.json</exclude>
            <exclude>**/spring.factories</exclude>
            <exclude>**/org.springframework.boot.autoconfigure.AutoConfiguration.imports</exclude>
            <exclude>**/spring.provides</exclude>
            <exclude>**/*.iml</exclude>
            <exclude>**/target/**</exclude>
            <exclude>**/nb-configuration.xml</exclude>
            <exclude>**/faces-config.NavData</exclude>
            <exclude>**/org.mockito.plugins.MockMaker</exclude>
            <exclude>.mvn/*</exclude>
            <exclude>.jenkins_maven_args</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>report-only</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>taglist-maven-plugin</artifactId>
        <version>3.2.1</version>
        <configuration>
          <tagListOptions>
            <tagClasses>
              <tagClass>
                <displayName>Todo Work</displayName>
                <tags>
                  <tag>
                    <matchString>todo</matchString>
                    <matchType>ignoreCase</matchType>
                  </tag>
                  <tag>
                    <matchString>FIXME</matchString>
                    <matchType>exact</matchType>
                  </tag>
                </tags>
              </tagClass>
              <tagClass>
                <displayName>Deprecated</displayName>
                <tags>
                  <tag>
                    <matchString>@Deprecated</matchString>
                    <matchType>exact</matchType>
                  </tag>
                </tags>
              </tagClass>
            </tagClasses>
          </tagListOptions>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jdepend-maven-plugin</artifactId>
        <version>2.1</version>
        <reportSets>
          <reportSet>
            <reports>
              <report>generate-no-fork</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <reportSets>
          <reportSet>
            <id>jacoco-aggregate</id>
            <reports>
              <report>report-integration</report>
              <report>report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting>
  <profiles>
    <profile>
      <id>fast</id>
      <build>
        <defaultGoal>install</defaultGoal>
      </build>
      <properties>
        <maven.test.skip.exec>true</maven.test.skip.exec>
        <maven.test.skip>true</maven.test.skip>
      </properties>
    </profile>
    <profile>
      <id>jdk8</id>
      <activation>
        <jdk>[1.8,)</jdk>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <artifactId>maven-javadoc-plugin</artifactId>
              <configuration>
                <sourcepath>${project.build.sourceDirectory}</sourcepath>
                <doclint>none</doclint>
                <additionalJOptions>
                  <additionalJOption>--allow-script-in-comments</additionalJOption>
                </additionalJOptions>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>docs</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-api-docs</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
            <inherited>true</inherited>
          </plugin>
          <plugin>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
            <inherited>true</inherited>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>apache-release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>net.nicoulaj.maven.plugins</groupId>
            <artifactId>checksum-maven-plugin</artifactId>
            <version>1.11</version>
            <executions>
              <execution>
                <id>source-release-checksum</id>
                <goals>
                  <goal>artifacts</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <algorithms>
                <algorithm>SHA-512</algorithm>
                <algorithm>SHA3-512</algorithm>
              </algorithms>
              <csvSummary>false</csvSummary>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <distributionManagement>
        <site>
          <id>shiro.website</id>
          <name>Apache Shiro Site</name>
          <url>scm:svn:https://svn.apache.org/repos/asf/shiro/site/publish/static/${project.version}</url>
        </site>
      </distributionManagement>
    </profile>
    <profile>
      <id>nexus-staging</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.sonatype.plugins</groupId>
            <artifactId>nexus-staging-maven-plugin</artifactId>
            <version>1.7.0</version>
            <extensions>true</extensions>
            <configuration>
              <nexusUrl>https://repository.apache.org</nexusUrl>
              <serverId>apache.releases.https</serverId>
              <skipNexusStagingDeployMojo>${nexus.deploy.skip}</skipNexusStagingDeployMojo>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>owasp</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.owasp</groupId>
            <artifactId>dependency-check-maven</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>aggregate</goal>
                </goals>
                <inherited>false</inherited>
              </execution>
            </executions>
            <inherited>false</inherited>
            <configuration>
              <suppressionFile>${root.dir}/src/owasp-suppression.xml</suppressionFile>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <reporting>
        <plugins>
          <plugin>
            <groupId>org.owasp</groupId>
            <artifactId>dependency-check-maven</artifactId>
            <reportSets>
              <reportSet>
                <reports>
                  <report>aggregate</report>
                </reports>
              </reportSet>
            </reportSets>
            <inherited>false</inherited>
            <configuration>
              <suppressionFile>${root.dir}/src/owasp-suppression.xml</suppressionFile>
              <name>OWASP Dependency Check</name>
            </configuration>
          </plugin>
        </plugins>
      </reporting>
    </profile>
    <profile>
      <id>ci</id>
      <properties>
        <jacoco.skip>false</jacoco.skip>
      </properties>
    </profile>
    <profile>
      <id>skip-checkstyle</id>
      <activation>
        <property>
          <name>checkstyle.skip</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <executions>
              <execution>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>