<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright (C) 2014-2023 jsonwebtoken.io
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-root</artifactId>
    <version>0.13.0</version>
    <name>JJWT</name>
    <description>JSON Web Token support for the JVM and Android</description>
    <packaging>pom</packaging>
    <url>https://github.com/jwtk/jjwt</url>

    <organization>
        <name>jsonwebtoken.io</name>
        <url>https://github.com/jwtk/jjwt</url>
    </organization>
    <inceptionYear>2014</inceptionYear>

    <licenses>
        <license>
            <name>Apache-2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <developers>
        <developer>
            <name>Les Hazlewood</name>
            <email>121180+lhazlewood@users.noreply.github.com</email>
            <organization>JJWT</organization>
            <organizationUrl>https://github.com/jwtk/jjwt</organizationUrl>
        </developer>
    </developers>

    <scm>
        <connection>scm:git:https://github.com/jwtk/jjwt.git</connection>
        <developerConnection>scm:git:https://github.com/jwtk/jjwt.git</developerConnection>
        <url>https://github.com/jwtk/jjwt.git</url>
        <tag>0.13.0</tag>
    </scm>
    <issueManagement>
        <system>GitHub Issues</system>
        <url>https://github.com/jwtk/jjwt/issues</url>
    </issueManagement>
    <ciManagement>
        <system>TravisCI</system>
        <url>https://travis-ci.org/jwtk/jjwt</url>
    </ciManagement>
    <distributionManagement>
        <snapshotRepository>
            <id>ossrh</id>
            <url>https://central.sonatype.com/repository/maven-snapshots/</url>
        </snapshotRepository>
        <repository>
            <id>ossrh</id>
            <url>https://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>

    <repositories>
        <repository>
            <id>ossrh</id>
            <name>OSSRH Snapshots</name>
            <url>https://central.sonatype.com/repository/maven-snapshots/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <arguments />

        <jjwt.root>${basedir}</jjwt.root>
        <jjwt.previousVersion>0.11.2</jjwt.previousVersion>

        <maven.jar.version>3.3.0</maven.jar.version>
        <maven.compiler.version>3.11.0</maven.compiler.version>
        <maven.javadoc.version>3.1.1</maven.javadoc.version> <!-- max version allowed for JDK 7 builds -->
        <maven.source.version>3.2.1</maven.source.version>
        <maven.resources.version>3.1.0</maven.resources.version>
        <maven.gpg.version>1.6</maven.gpg.version> <!-- max version allowed for JDK 7 builds -->
        <maven.japicmp.version>0.13.1</maven.japicmp.version> <!-- max version allowed for JDK 7 builds -->
        <gmavenplus.version>1.6.1</gmavenplus.version> <!-- higher version used in jdk8AndLater profile below -->
        <maven.license.version>4.2.rc3</maven.license.version>
        <maven.license.skipExistingHeaders>true</maven.license.skipExistingHeaders>

        <jdk.version>7</jdk.version>
        <buildNumber>${user.name}-${maven.build.timestamp}</buildNumber>

        <jackson.version>2.12.7.1</jackson.version>
        <orgjson.version>20231013</orgjson.version>
        <gson.version>2.11.0</gson.version>

        <maven.javadoc.additionalOptions />

        <!-- Optional Runtime Dependencies: -->
        <bouncycastle.version>1.78.1</bouncycastle.version>
        <bcprov.artifactId>bcprov-jdk18on</bcprov.artifactId>
        <bcpkix.artifactId>bcpkix-jdk18on</bcpkix.artifactId>

        <!-- Test Dependencies: Only required for testing when building.  Not required by users at runtime: -->
        <groovy.version>2.5.16</groovy.version> <!-- higher version used in jdk8AndLater profile below -->
        <easymock.version>3.6</easymock.version> <!-- higher version used in jdk8AndLater profile below -->
        <junit.version>4.12</junit.version>
        <powermock.version>2.0.0-beta.5</powermock.version> <!-- higher version used in jdk8AndLater profile below -->
        <failsafe.plugin.version>3.0.0-M5</failsafe.plugin.version>
        <surefire.plugin.version>3.0.0-M5</surefire.plugin.version>
        <clover.version>4.3.1</clover.version> <!-- max version allowed for JDK 7 builds -->
        <clover.db>${jjwt.root}/target/clover/clover.db</clover.db>
        <surefire.argLine />
        <test.addOpens>
            --add-opens java.base/java.lang=ALL-UNNAMED, <!-- Needed by EasyMock/cglib -->
            --add-opens java.desktop/java.beans=ALL-UNNAMED, <!-- Needed by EasyMock/cglib -->
            --add-opens java.base/java.lang.ref=ALL-UNNAMED, <!-- Needed by PowerMock -->
            <!-- needed by KeysImplTest.testKeyPairFor, KeysTest.testDeprecatedKeyPairFor, and
                 KeysTest.testKeyPairBuilder: -->
            --add-opens java.base/sun.security.util=ALL-UNNAMED
        </test.addOpens>

    </properties>

    <modules>
        <module>api</module>
        <module>impl</module>
        <module>extensions</module>
        <module>tdjar</module>
        <module>bom</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-api</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-impl</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-jackson</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-orgjson</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-gson</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>${orgjson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>${gson.version}</version>
            </dependency>

            <!-- Used only during testing for PS256, PS384 and PS512 since JDK <= 10 doesn't support them: -->
            <dependency>
                <groupId>org.bouncycastle</groupId>
                <artifactId>${bcprov.artifactId}</artifactId>
                <version>${bouncycastle.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.bouncycastle</groupId>
                <artifactId>${bcpkix.artifactId}</artifactId>
                <version>${bouncycastle.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- Test Dependencies: Only required for testing when building.  Not required by users at runtime: -->
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy</artifactId>
            <version>${groovy.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
            <version>${easymock.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-junit4</artifactId>
            <version>${powermock.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-easymock</artifactId>
            <version>${powermock.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-core</artifactId>
            <version>${powermock.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.5.3</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.scm</groupId>
                            <artifactId>maven-scm-provider-gitexe</artifactId>
                            <version>1.9.5</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <mavenExecutorId>forked-path</mavenExecutorId>
                        <releaseProfiles>ossrh</releaseProfiles>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.openclover</groupId>
                    <artifactId>clover-maven-plugin</artifactId>
                    <version>${clover.version}</version>
                    <configuration>
                        <cloverDatabase>${clover.db}</cloverDatabase>
                        <!--
                        cloverDatabase>${user.home}/.clover/${project.groupId}/jjwt/clover.db</cloverDatabase>
                        <snapshot>${user.home}/.clover/${project.groupId}/jjwt/clover.snapshot</snapshot>
                        <historyDir>${user.home}/.clover/${project.groupId}/jjwt</historyDir> -->
                        <excludes>
                            <exclude>io/jsonwebtoken/lang/*</exclude>
                            <exclude>io/jsonwebtoken/all/JavaReadmeTest.java</exclude>
                            <!-- Imported from commons-codec 585497f09b026f6602daf986723a554e051bdfe6, don't
                            need full coverage: -->
                            <exclude>io/jsonwebtoken/impl/io/CodecPolicy.java</exclude>
                            <exclude>io/jsonwebtoken/impl/io/BaseNCodec.java</exclude>
                            <exclude>io/jsonwebtoken/impl/io/Base64Codec.java</exclude>
                            <exclude>io/jsonwebtoken/impl/io/BaseNCodecOutputStream.java</exclude>
                            <exclude>io/jsonwebtoken/impl/io/BaseNCodecInputStream.java</exclude>
                            <exclude>io/jsonwebtoken/impl/io/Base64OutputStream.java</exclude>
                            <exclude>io/jsonwebtoken/impl/io/Base64InputStream.java</exclude>
                            <exclude>io/jsonwebtoken/impl/io/FilteredInputStream.java</exclude>
                            <exclude>io/jsonwebtoken/impl/io/FilteredOutputStream.java</exclude>
                            <exclude>io/jsonwebtoken/impl/io/CharSequenceReader.java</exclude>
                            <exclude>io/jsonwebtoken/impl/lang/AddOpens.java</exclude>
                        </excludes>
                        <methodPercentage>100.000000%</methodPercentage>
                        <statementPercentage>100.000000%</statementPercentage>
                        <conditionalPercentage>100.000000%</conditionalPercentage>
                        <targetPercentage>100.000000%</targetPercentage>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>com.mycila</groupId>
                    <artifactId>license-maven-plugin</artifactId>
                    <version>${maven.license.version}</version>
                    <configuration>
                        <skipExistingHeaders>${maven.license.skipExistingHeaders}</skipExistingHeaders>
                        <mapping>
                            <toml>SCRIPT_STYLE</toml> <!-- yaml -->
                            <pem>SCRIPT_STYLE</pem> <!-- any will do -->
                        </mapping>
                        <licenseSets>
                            <licenseSet>
                                <header>${jjwt.root}/src/license/header.txt</header>
                                <excludes>
                                    <exclude>**/license/header.txt</exclude>
                                    <exclude>**/*.test.orgjson</exclude>
                                    <exclude>**/*.test.gson</exclude>
                                    <exclude>**/*.test.override</exclude>
                                    <exclude>**/*.bnd</exclude>
                                    <exclude>LICENSE</exclude>
                                    <exclude>**/mvnw</exclude>
                                    <exclude>**/lombok.config</exclude>
                                    <exclude>.gitattributes</exclude>
                                    <exclude>**/genkeys</exclude>
                                    <exclude>**/softhsm</exclude>
                                    <exclude>**.adoc</exclude>
                                </excludes>
                            </licenseSet>
                        </licenseSets>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>com.mycila</groupId>
                            <artifactId>license-maven-plugin-git</artifactId>
                            <version>${maven.license.version}</version>
                        </dependency>
                    </dependencies>
                    <executions>
                        <execution>
                            <goals>
                                <goal>check</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${maven.javadoc.version}</version>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <source>${jdk.version}</source>
                        <failOnError>true</failOnError>
                        <failOnWarnings>false</failOnWarnings>
                        <additionalOptions>${maven.javadoc.additionalOptions}</additionalOptions>
                    </configuration>
                    <dependencies>
                        <!-- Workaround for Java 9 -->
                        <dependency>
                            <groupId>commons-lang</groupId>
                            <artifactId>commons-lang</artifactId>
                            <version>2.6</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>${maven.jar.version}</version>
                    <configuration>
                        <archive>
                            <manifest>
                                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            </manifest>
                            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>${maven.source.version}</version>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <goals>
                                <goal>jar-no-fork</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>${maven.resources.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <version>${maven.gpg.version}</version>
                    <executions>
                        <execution>
                            <id>sign-artifacts</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>sign</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <!-- japicmp will scan code for binary breaking changes, Open api/target/japicmp/japicmp.html
                         for a report of the changes since ${jjwt.previousVersion} -->
                    <groupId>com.github.siom79.japicmp</groupId>
                    <artifactId>japicmp-maven-plugin</artifactId>
                    <version>${maven.japicmp.version}</version>
                    <configuration>
                        <oldVersion>
                            <dependency>
                                <groupId>${project.groupId}</groupId>
                                <artifactId>${project.artifactId}</artifactId>
                                <version>${jjwt.previousVersion}</version>
                                <type>jar</type>
                            </dependency>
                        </oldVersion>
                        <parameter>
                            <onlyModified>true</onlyModified>
                            <!-- <breakBuildOnBinaryIncompatibleModifications>true</breakBuildOnBinaryIncompatibleModifications> -->
                            <!-- TODO: enable after 1.0 -->
                            <breakBuildBasedOnSemanticVersioning>true</breakBuildBasedOnSemanticVersioning>

                            <!-- All of the following can be removed after 0.11.1 is released: -->
                            <!-- <excludes>
                                <exclude>io.jsonwebtoken.Header#getAlgorithm()</exclude>
                                <exclude>io.jsonwebtoken.Header#setAlgorithm(java.lang.String)</exclude>
                                <exclude>io.jsonwebtoken.JwsHeader#getAlgorithm()</exclude>
                                <exclude>io.jsonwebtoken.JwsHeader#setAlgorithm(java.lang.String)</exclude>
                                <exclude>io.jsonwebtoken.lang.Assert#notNull(java.lang.Object,java.lang.String)</exclude>
                            </excludes> -->
                        </parameter>
                    </configuration>
                    <executions>
                        <execution>
                            <id>japicmp</id>
                            <goals>
                                <goal>cmp</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

                <!-- The following plugin section is used in jjwt-jackson and jjwt-orgjson, to repackage (and verify)
                     binary compatibility with previous versions. In v0.11.0 the implementations changed packages to
                     avoid split package issues with Java 9+ see: https://github.com/jwtk/jjwt/issues/399 -->
                <!-- TODO: remove these deprecated packages and this config before v1.0 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>3.2.1</version>
                    <configuration>
                        <shadedClassifierName>deprecated</shadedClassifierName>
                        <shadedArtifactAttached>true</shadedArtifactAttached>
                        <createDependencyReducedPom>false</createDependencyReducedPom>
                        <artifactSet>
                            <includes>
                                <include>${project.groupId}:${project.artifactId}</include>
                            </includes>
                        </artifactSet>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                        </transformers>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>1.4.1</version>
                <executions>
                    <execution>
                        <id>enforce-banned-dependencies</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <bannedDependencies>
                                    <searchTransitive>true</searchTransitive>
                                    <excludes>
                                        <exclude>commons-logging</exclude>
                                    </excludes>
                                </bannedDependencies>
                            </rules>
                            <fail>true</fail>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
<!--            <plugin>-->
<!--                <groupId>org.apache.maven.plugins</groupId>-->
<!--                <artifactId>maven-compiler-plugin</artifactId>-->
<!--                <version>${maven.compiler.version}</version>-->
<!--                <executions>-->
<!--                    <execution>-->
<!--                        <id>default-compile</id>-->
<!--                        <configuration>-->
<!--                            <release>9</release>-->
<!--                            &lt;!&ndash; no excludes: compile everything to ensure module-info contains right entries &ndash;&gt;-->
<!--                        </configuration>-->
<!--                    </execution>-->
<!--                    <execution>-->
<!--                        <id>base-compile</id>-->
<!--                        <goals>-->
<!--                            <goal>compile</goal>-->
<!--                        </goals>-->
<!--                        <configuration>-->
<!--                            &lt;!&ndash; recompile everything for target VM except the module-info.java &ndash;&gt;-->
<!--                            <excludes>-->
<!--                                <exclude>module-info.java</exclude>-->
<!--                            </excludes>-->
<!--                        </configuration>-->
<!--                    </execution>-->
<!--                </executions>-->
<!--                &lt;!&ndash; defaults for compile and testCompile &ndash;&gt;-->
<!--                <configuration>-->
<!--                    <release>${jdk.version}</release>-->
<!--&lt;!&ndash;                    &lt;!&ndash; Only required when Maven runtime JAVA_HOME isn't at least Java 9 and when haven't configured the maven-toolchains-plugin &ndash;&gt;&ndash;&gt;-->
<!--&lt;!&ndash;                    <jdkToolchain>&ndash;&gt;-->
<!--&lt;!&ndash;                        <version>9</version>&ndash;&gt;-->
<!--&lt;!&ndash;                    </jdkToolchain>&ndash;&gt;-->
<!--                </configuration>-->
<!--            </plugin>-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven.compiler.version}</version>
                <configuration>
                    <source>${jdk.version}</source>
                    <target>${jdk.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <!-- Allow for writing tests in Groovy: -->
            <plugin>
                <groupId>org.codehaus.gmavenplus</groupId>
                <artifactId>gmavenplus-plugin</artifactId>
                <version>${gmavenplus.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>addSources</goal>
                            <goal>addTestSources</goal>
                            <goal>generateStubs</goal>
                            <goal>compile</goal>
                            <goal>generateTestStubs</goal>
                            <goal>compileTests</goal>
                            <goal>removeStubs</goal>
                            <goal>removeTestStubs</goal>
                        </goals>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.codehaus.groovy</groupId>
                        <artifactId>groovy</artifactId>
                        <version>${groovy.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${surefire.plugin.version}</version>
                <configuration>
                    <argLine>${surefire.argLine}</argLine>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>${failsafe.plugin.version}</version>
                <configuration>
                    <includes>
                        <include>**/*IT.java</include>
                        <include>**/*IT.groovy</include>
                        <include>**/*ITCase.java</include>
                        <include>**/*ITCase.groovy</include>
                    </includes>
                    <excludes>
                        <exclude>**/*ManualIT.java</exclude>
                        <exclude>**/*ManualIT.groovy</exclude>
                    </excludes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.openclover</groupId>
                <artifactId>clover-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.sonatype.plugins</groupId>
                <artifactId>nexus-staging-maven-plugin</artifactId>
                <version>1.6.8</version>
                <extensions>true</extensions>
                <configuration>
                    <serverId>ossrh</serverId>
                    <nexusUrl>https://ossrh-staging-api.central.sonatype.com/</nexusUrl>
                    <autoReleaseAfterClose>false</autoReleaseAfterClose>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <version>3.5.0</version>
                <executions>
                    <execution>
                        <id>bundle-manifest</id>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>manifest</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <instructions>
                        <_include>-bnd.bnd</_include>
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>io.jsonwebtoken.coveralls</groupId>
                <artifactId>coveralls-maven-plugin</artifactId>
                <version>4.4.1</version>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>jdk7</id>
            <activation>
                <jdk>1.7</jdk>
            </activation>
            <properties>
                <maven.jar.version>3.2.2</maven.jar.version>
                <maven.compiler.version>3.8.1</maven.compiler.version>
                <orgjson.version>20230618</orgjson.version>
                <bcprov.artifactId>bcprov-jdk15to18</bcprov.artifactId>
                <bcpkix.artifactId>bcpkix-jdk15to18</bcpkix.artifactId>
            </properties>
        </profile>
        <profile>
            <id>jdk8AndLater</id>
            <activation>
                <jdk>[1.8,)</jdk>
            </activation>
            <properties>
                <gmavenplus.version>3.0.2</gmavenplus.version>
                <groovy.version>3.0.19</groovy.version>
                <easymock.version>4.2</easymock.version>
                <powermock.version>2.0.7</powermock.version>
                <maven.japicmp.version>0.15.6</maven.japicmp.version>
                <failsafe.plugin.version>3.1.2</failsafe.plugin.version>
                <surefire.plugin.version>3.1.2</surefire.plugin.version>
            </properties>
        </profile>
<!--        <profile>-->
<!--            <id>jdk7And8</id>-->
<!--            <activation>-->
<!--                <jdk>[1.7,9)</jdk>-->
<!--            </activation>-->
<!--            <build>-->
<!--                <plugins>-->
<!--                    <plugin>-->
<!--                        <groupId>org.apache.maven.plugins</groupId>-->
<!--                        <artifactId>maven-compiler-plugin</artifactId>-->
<!--                        <version>${maven.compiler.version}</version>-->
<!--                        <configuration>-->
<!--                            <source>${jdk.version}</source>-->
<!--                            <target>${jdk.version}</target>-->
<!--                            <release />-->
<!--                            <encoding>${project.build.sourceEncoding}</encoding>-->
<!--                            <excludes>-->
<!--                                <exclude>module-info.java</exclude>-->
<!--                            </excludes>-->
<!--                        </configuration>-->
<!--                    </plugin>-->
<!--                </plugins>-->
<!--            </build>-->
<!--        </profile>-->
        <profile>
            <!-- Added profile to address https://github.com/jwtk/jjwt/issues/364 -->
            <id>jdk9AndLater</id>
            <activation>
                <jdk>[1.9,)</jdk>
            </activation>
            <properties>
                <maven.compiler.version>3.11.0</maven.compiler.version>
                <surefire.useModulePath>false</surefire.useModulePath>
                <maven.javadoc.additionalOptions>-html5</maven.javadoc.additionalOptions>
                <surefire.argLine>${test.addOpens}, --illegal-access=debug</surefire.argLine>
            </properties>
        </profile>
        <profile>
            <id>jdk17AndLater</id>
            <activation>
                <jdk>[17,)</jdk>
            </activation>
            <properties>
                <maven.javadoc.additionalOptions>-html5</maven.javadoc.additionalOptions>
                <surefire.argLine>${test.addOpens}</surefire.argLine>
            </properties>
        </profile>
        <profile>
            <id>jdk21AndLater</id>
            <activation>
                <jdk>[21,)</jdk>
            </activation>
            <properties>
                <!-- normally this is 1.7, but as of 21, JDK 8 is the lowest source/target -->
                <jdk.version>8</jdk.version>
            </properties>
        </profile>
        <profile>
            <id>docs</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>ossrh</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
