<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>de.powerstat.toolbaseline</groupId>
  <artifactId>tbl-java-parent</artifactId>
  <version>17.1.1</version>
  <packaging>pom</packaging>

  <name>PowerStatsToolbaselineJava</name>
  <description>Toolbaseline for Java</description>
  <url>https://www.powerstat.de/ToolbaselineJava.html</url>

  <organization>
    <name>Dipl.-Inform. Kai Hofmann</name>
    <url>http://www.powerstat.de/</url>
  </organization>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

    <license.inceptionYear>2024</license.inceptionYear>
    <license.licenseName>Apache License, Version 2.0</license.licenseName>

    <sonarTypeServer>ossrh1</sonarTypeServer>
    <sonarTypeHost>s01.oss.sonatype.org</sonarTypeHost>
    
    <sonar.host.url>http://localhost:9000</sonar.host.url>
    
    <javaRelease>17</javaRelease>
    
    <javadocPluginVersion>3.10.0</javadocPluginVersion>
    <jxrPluginVersion>3.5.0</jxrPluginVersion>
    <jdependPluginVersion>2.1</jdependPluginVersion>
    <checktylePluginVersion>3.5.0</checktylePluginVersion>
    <pmdPluginVersion>3.25.0</pmdPluginVersion>
    <spotbugsPluginVersion>4.8.6.4</spotbugsPluginVersion>
    <sbcontribPluginVersion>7.6.4</sbcontribPluginVersion>
    <findsecbugsPluginVersion>1.13.0</findsecbugsPluginVersion>
    <jacocoPluginVersion>0.8.12</jacocoPluginVersion>
     
    <junitVersion>5.11.1</junitVersion>
    <junitPlatformVersion>1.11.1</junitPlatformVersion>
    <mockitoVersion>5.14.0</mockitoVersion>
    <log4jVersion>2.23.1</log4jVersion>
    <cucumberVersion>7.19.0</cucumberVersion>
  </properties>

  <profiles>
    <!-- GPG Signature on release -->
    <profile>
      <id>release-sign-artifacts</id>
      <activation>
        <property>
          <name>performRelease</name>
          <value>true</value>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>3.2.7</version>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>native</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.graalvm.buildtools</groupId>
            <artifactId>native-maven-plugin</artifactId>
            <version>0.10.3</version>
            <extensions>true</extensions>
            <executions>
              <execution>
                <id>build-native</id>
                <goals>
                  <goal>compile-no-fork</goal>
                </goals>
                <phase>package</phase>
              </execution>
              <!--
              <execution>
                <id>test-native</id>
                <goals>
                  <goal>test</goal>
                </goals>
                <phase>test</phase>
              </execution>
              -->
            </executions>
            <!--
            <configuration>
              <mainClass>${exec.mainClass}</mainClass>
            </configuration>
            -->
          </plugin>
          
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.4.1</version>
            <executions>
              <execution>
                <id>java-agent</id>
                <goals>
                  <goal>exec</goal>
                </goals>
                <configuration>
                  <executable>java</executable>
                  <workingDirectory>${project.build.directory}</workingDirectory>
                  <arguments>
                    <argument>-classpath</argument>
                    <classpath />
                    <argument>${mainClass}</argument>
                  </arguments>
                </configuration>
              </execution>
              <execution>
                <id>native</id>
                <goals>
                  <goal>exec</goal>
                </goals>
                <configuration>
                  <executable>${project.build.directory}/${imageName}</executable>
                  <workingDirectory>${project.build.directory}</workingDirectory>
                </configuration>
              </execution>
            </executions>
          </plugin>
 
        </plugins>
      </build>
    </profile>

  </profiles>

  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0</url>
    </license>
  </licenses>

  <developers>
    <developer>
      <id>powerstat</id>
      <name>Kai Hofmann</name>
      <email>powerstat@web.de</email>
      <url>http://www.powerstat.de/</url>
      <roles>
        <role>manager</role>
        <role>architect</role>
        <role>developer</role>
        <role>tester</role>
        <role>security</role>
        <role>translator</role>
      </roles>
      <timezone>Europe/Berlin</timezone>
      <properties>
        <picUrl>http://www.powerstat.de/pics/KaiHofmann.jpeg</picUrl>
      </properties>
    </developer>

  </developers>

  <distributionManagement>
    <snapshotRepository>
      <id>${sonarTypeServer}</id>
      <url>https://${sonarTypeHost}/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
      <id>${sonarTypeServer}</id>
      <url>https://${sonarTypeHost}/service/local/staging/deploy/maven2/</url>
    </repository>
    <site>
      <id>powerstat</id>
      <url>sftp://${web.server}/Toolbaseline/Java/</url>
    </site>
  </distributionManagement>

  <scm>
    <connection>scm:git:https://github.com/PowerStat/ToolbaselineJava.git</connection>
    <developerConnection>scm:git:https://github.com/PowerStat/ToolbaselineJava.git</developerConnection>
    <url>https://github.com/PowerStat/ToolbaselineJava</url>
    <tag>V17.1.1</tag>
  </scm>

  <repositories>
  </repositories>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-clean-plugin</artifactId>
        <version>3.4.0</version>
      </plugin>
      
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <version>2.17.1</version>
      </plugin>

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

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

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.13.0</version>
        <configuration>
          <fork>true</fork>
          <showDeprecation>true</showDeprecation>
          <showWarnings>true</showWarnings>
          <debug>true</debug>
          <verbose>false</verbose>
          <release>${javaRelease}</release>
          <source>${javaRelease}</source>
          <target>${javaRelease}</target>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>${javadocPluginVersion}</version>
        <configuration>
          <show>protected</show>
          <failOnError>false</failOnError>
        </configuration>
        <executions>
          <execution>
            <id>attach-javadoc</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>3.5.0</version>
        <configuration>
          <forkCount>1</forkCount> <!-- 0 -->
          <trimStackTrace>false</trimStackTrace>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junitVersion}</version>
          </dependency>

        </dependencies>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>3.5.0</version>
        <dependencies>
          <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junitVersion}</version>
          </dependency>

        </dependencies>
        <configuration>
          <trimStackTrace>false</trimStackTrace>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.sonarsource.scanner.maven</groupId>
        <artifactId>sonar-maven-plugin</artifactId>
        <version>4.0.0.4121</version>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.4.2</version>
        <configuration>
          <archive>
            <manifestEntries>
              <Version>${project.version}</Version>
              <GIT>https://github.com/PowerStat/ToolbaselineJava.git</GIT>
            </manifestEntries>
            <addMavenDescriptor>false</addMavenDescriptor>
          </archive>
          <finalName>${project.artifactId}</finalName>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.3.1</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <version>3.1.1</version>
        <configuration>
          <localCheckout>true</localCheckout>
          <pushChanges>false</pushChanges>
          <mavenExecutorId>forked-path</mavenExecutorId>
          <tagNameFormat>V@{project.version}</tagNameFormat>
          <autoVersionSubmodules>true</autoVersionSubmodules>
          <releaseProfiles>release-sign-artifacts</releaseProfiles>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.apache.maven.scm</groupId>
            <artifactId>maven-scm-provider-gitexe</artifactId>
            <version>2.1.0</version>
          </dependency>

          <dependency>
            <groupId>org.apache.maven.scm</groupId>
            <artifactId>maven-scm-api</artifactId>
            <version>2.1.0</version>
          </dependency>

        </dependencies>
      </plugin>

      <plugin>
        <groupId>org.sonatype.plugins</groupId>
        <artifactId>nexus-staging-maven-plugin</artifactId>
        <version>1.7.0</version>
        <extensions>true</extensions>
        <configuration>
          <serverId>${sonarTypeServer}</serverId>
          <nexusUrl>https://${sonarTypeHost}/</nexusUrl>
          <autoReleaseAfterClose>true</autoReleaseAfterClose>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-deploy-plugin</artifactId>
        <version>3.1.3</version>
        <executions>
          <execution>
            <id>default-deploy</id>
            <phase>deploy</phase>
            <goals>
              <goal>deploy</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>license-maven-plugin</artifactId>
        <version>2.4.0</version>
        <configuration>
          <addSvnKeyWords>false</addSvnKeyWords>
          <licenseName>Apache License, Version 2.0</licenseName>
          <licenseResolver>${project.baseUri}/src/license</licenseResolver>
        </configuration>
        <executions>
          <execution>
            <id>add-third-party</id>
            <goals>
              <goal>add-third-party</goal>
            </goals>
            <phase>generate-resources</phase>
            <configuration>
              <useMissingFile>true</useMissingFile>
              <thirdPartyFilename>META-INF/DEPENDENCY-LICENSES.txt</thirdPartyFilename>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.5.0</version>
        <executions>
          <execution>
            <id>enforce</id>
            <configuration>
              <rules>
                <dependencyConvergence />
                <banDuplicatePomDependencyVersions />
                <requirePluginVersions>
                  <banLatest>true</banLatest>
                  <banRelease>true</banRelease>
                  <banSnapshots>true</banSnapshots>
                  <phases>clean,deploy,site</phases>
                </requirePluginVersions>
                <requireReleaseDeps />
                <requireUpperBoundDeps />
                <!--
                <reactorModuleConvergence>
                  <message>The reactor is not valid</message>
                  <ignoreModuleDependencies>false</ignoreModuleDependencies>
                </reactorModuleConvergence>
                -->
                <!--
                <requireEnvironmentVariable>
                  <variableName>gpg.passphrase</variableName>
                </requireEnvironmentVariable>
                -->
              </rules>
            </configuration>
            <goals>
              <goal>enforce</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <rules>
            <requireMavenVersion>
              <version>3.8.5</version>
            </requireMavenVersion>
            <requireJavaVersion>
              <version>${javaRelease}</version>
            </requireJavaVersion>
          </rules>
        </configuration>
      </plugin>

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

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jdepend-maven-plugin</artifactId>
        <version>${jdependPluginVersion}</version>
      </plugin>
      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.20.0</version>
        <dependencies>
          <dependency>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-ssh</artifactId>
            <version>3.5.3</version>
          </dependency>
          <!-- src/site/asciidoc, src/site/resources, site.xml
          <dependency>
            <groupId>org.asciidoctor</groupId>
            <artifactId>asciidoctor-maven-plugin</artifactId>
            <version>3.0.0</version>
          </dependency>
          -->
        </dependencies>
        <!--
        <configuration>
          <asciidoc>
            <templateDirs>
              <dir>src/site/asciidoc/templates</dir>
            </templateDirs>
            <requires>
              <require>asciidoctor-diagram</require>
            </requires>
            <attributes>
              <source-highlighter>coderay</source-highlighter>
              <coderay-css>style</coderay-css>
            </attributes>
          </asciidoc>
          <moduleExcludes>
            <asciidoc>**/_*.adoc</asciidoc>
          </moduleExcludes>
        </configuration>
        -->
      </plugin>

      <plugin>
        <groupId>org.pitest</groupId>
        <artifactId>pitest-maven</artifactId>
        <version>1.17.0</version>
        <configuration>
          <timestampedReports>false</timestampedReports>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-junit5-plugin</artifactId>
            <version>1.2.1</version>
          </dependency>

        </dependencies>
      </plugin>

      <plugin>
        <groupId>org.asciidoctor</groupId>
        <artifactId>asciidoctor-maven-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>output-html</id>
            <phase>generate-resources</phase>
            <goals>
              <goal>process-asciidoc</goal>
            </goals>
            <configuration>
              <sourceDirectory>src/site/asciidoc</sourceDirectory>
              <!-- <sourceDocumentName>index.adoc</sourceDocumentName> -->
              <backend>xhtml5</backend>
              <attributes>
                <toc>left</toc>
              </attributes>
              <requires>
                <require>asciidoctor-diagram</require>
              </requires>
            </configuration>
          </execution>
<!--
          <execution>
            <id>output-pdf</id>
            <phase>generate-resources</phase>
            <goals>
              <goal>process-asciidoc</goal>
            </goals>
            <configuration>
              <backend>pdf</backend>
            </configuration>
          </execution>
-->
        </executions>

        <dependencies>
          <dependency>
            <groupId>org.asciidoctor</groupId>
            <artifactId>asciidoctorj-pdf</artifactId>
            <version>2.3.18</version>
          </dependency>
          
          <dependency>
            <groupId>org.asciidoctor</groupId>
            <artifactId>asciidoctorj-diagram</artifactId>
            <version>2.3.1</version>
          </dependency>
                    
        </dependencies>

      </plugin>
       
      <plugin>
        <groupId>com.societegenerale.commons</groupId>
        <artifactId>arch-unit-maven-plugin</artifactId>
        <version>3.0.2</version>
        <configuration>
          <rules>
            <preConfiguredRules>
              <rule>com.societegenerale.commons.plugin.rules.HexagonalArchitectureTest</rule>
              <rule>com.societegenerale.commons.plugin.rules.NoAutowiredFieldTest</rule>
              <rule>com.societegenerale.commons.plugin.rules.NoInjectedFieldTest</rule>
              <rule>com.societegenerale.commons.plugin.rules.NoJavaUtilDateRuleTest</rule>
              <rule>com.societegenerale.commons.plugin.rules.NoJodaTimeRuleTest</rule>
              <rule>com.societegenerale.commons.plugin.rules.NoPowerMockRuleTest</rule>
              <rule>com.societegenerale.commons.plugin.rules.NoPublicFieldRuleTest</rule>
              <rule>com.societegenerale.commons.plugin.rules.NoStandardStreamRuleTest</rule>
              <rule>com.societegenerale.commons.plugin.rules.NoTestIgnoreWithoutCommentRuleTest</rule>
            </preConfiguredRules>
            <!--
            <configurableRules>
              <configurableRule>
                <rule>com.tngtech.archunit.library.GeneralCodingRules</rule>
                <applyOn>
                  <packageName>de.powerstat.project</packageName>
                  <scope>main</scope>
                </applyOn>
                <checks>
                  <check>NO_CLASSES_SHOULD_ACCESS_STANDARD_STREAMS</check>
                </checks>
              </configurableRule>
            </configurableRules> 
            -->
          </rules>
        </configuration>
        <executions>
          <execution>
            <phase>test</phase>
            <goals>
              <goal>arch-test</goal>
            </goals>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>com.societegenerale.commons</groupId>
            <artifactId>arch-unit-build-plugin-core</artifactId>
            <version>3.1.1</version>
          </dependency>
        </dependencies>
      </plugin>
      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jdeprscan-plugin</artifactId>
        <version>3.0.0-alpha-1</version>
      </plugin>
      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>${checktylePluginVersion}</version>
        <configuration>
          <consoleOutput>true</consoleOutput>
          <configLocation>checkstyle-config.xml</configLocation>
          <failsOnError>false</failsOnError>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
          <excludes>**/module-info.java,**/package-info.java</excludes>
        </configuration>
      </plugin>
      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>${pmdPluginVersion}</version>
        <configuration>
          <verbose>true</verbose>
          <includeTests>true</includeTests>
          <targetJdk>${javaRelease}</targetJdk>
          <excludes>**/module-info.java,**/package-info.java</excludes>
          <rulesets>
            <ruleset>PMD.xml</ruleset>
          </rulesets>
        </configuration>
      </plugin>
      
      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <version>${spotbugsPluginVersion}</version>
        <configuration>
          <effort>max</effort>
          <threshold>low</threshold>
          <failOnError>false</failOnError>
          <includeTests>true</includeTests>
          <!-- <excludes>**/module-info.java,**/package-info.java</excludes> -->
          <plugins>
            <plugin>
              <groupId>com.mebigfatguy.sb-contrib</groupId>
              <artifactId>sb-contrib</artifactId>
              <version>${sbcontribPluginVersion}</version>
            </plugin>

            <plugin>
              <groupId>com.h3xstream.findsecbugs</groupId>
              <artifactId>findsecbugs-plugin</artifactId>
              <version>${findsecbugsPluginVersion}</version>
            </plugin>

          </plugins>
        </configuration>
      </plugin>

      <plugin> <!-- Not working: https://issues.apache.org/jira/browse/MJDEPS-25 -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jdeps-plugin</artifactId>
        <version>3.1.2</version>
        <configuration>
          <module>de.powerstat</module>
          <multiRelease>${javaRelease}</multiRelease>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-toolchains-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          <toolchains>
            <jdk>
              <version>[${javaRelease},)</version>
            </jdk>
          </toolchains>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacocoPluginVersion}</version>
        <executions>
          <execution>
            <id>jacoco-initialize</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
          <execution>
            <id>jacoco-report</id>
            <phase>test</phase>
            <goals>
              <goal>report</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.spdx</groupId>
        <artifactId>spdx-maven-plugin</artifactId>
        <version>0.7.4</version>
        <executions>
          <execution>
            <id>build-spdx</id>
            <goals>
              <goal>createSPDX</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <outputFormat>RDF/XML</outputFormat>
        </configuration>
      </plugin>
      
      <plugin>
        <groupId>org.cyclonedx</groupId>
        <artifactId>cyclonedx-maven-plugin</artifactId>
        <version>2.8.2</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>makeAggregateBom</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <projectType>library</projectType>
          <!-- application, framework, library, container, platform, operating-system, device, device-driver, firmware, file, machine-learning-model, data -->
          <outputFormat>xml</outputFormat>
        </configuration>
      </plugin>

      <!--
      <plugin>
        <groupId>io.github.pmckeown</groupId>
        <artifactId>dependency-track-maven-plugin</artifactId>
        <version>1.7.0</version>
        <configuration>
          <dependencyTrackBaseUrl>http://localhost:8081</dependencyTrackBaseUrl>
          <apiKey>API_KEY</apiKey>
        </configuration>
      </plugin>
      -->

    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>3.5.0</version>
        <configuration>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacocoPluginVersion}</version>
        <reportSets>
          <reportSet>
            <reports>
              <report>report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>${checktylePluginVersion}</version>
        <configuration>
          <configLocation>checkstyle-config.xml</configLocation>
          <checkstyleXmlOutput>true</checkstyleXmlOutput>
          <checkstyleXmlOutputDirectory>target/site</checkstyleXmlOutputDirectory>
          <xmlOutput>true</xmlOutput>
          <failsOnError>false</failsOnError>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
          <excludes>**/module-info.java,**/package-info.java</excludes>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>${pmdPluginVersion}</version>
        <configuration>
          <pmdXmlOutput>true</pmdXmlOutput>
          <pmdXmlOutputDirectory>target/site</pmdXmlOutputDirectory>
          <xmlOutput>true</xmlOutput>
          <includeTests>true</includeTests>
          <targetJdk>${javaRelease}</targetJdk>
          <excludes>**/module-info.java,**/package-info.java</excludes>
          <rulesets>
            <ruleset>PMD.xml</ruleset>
          </rulesets>
        </configuration>
      </plugin>

      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <version>${spotbugsPluginVersion}</version>
        <configuration>
          <effort>max</effort>
          <threshold>low</threshold>
          <xmlOutput>true</xmlOutput>
          <spotbugsXmlWithMessages>true</spotbugsXmlWithMessages>
          <spotbugsXmlOutputDirectory>target/site</spotbugsXmlOutputDirectory>
          <failOnError>false</failOnError>
          <includeTests>true</includeTests>
          <!-- <excludes>**/module-info.java,**/package-info.java</excludes> -->
          <plugins>
            <plugin>
              <groupId>com.mebigfatguy.sb-contrib</groupId>
              <artifactId>sb-contrib</artifactId>
              <version>${sbcontribPluginVersion}</version>
            </plugin>

            <plugin>
              <groupId>com.h3xstream.findsecbugs</groupId>
              <artifactId>findsecbugs-plugin</artifactId>
              <version>${findsecbugsPluginVersion}</version>
            </plugin>

          </plugins>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>${javadocPluginVersion}</version>
        <configuration>
          <show>private</show>
          <failOnError>false</failOnError>
        </configuration>
      </plugin>

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

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jdepend-maven-plugin</artifactId>
        <version>${jdependPluginVersion}</version>
      </plugin>

      <plugin>
        <groupId>org.owasp</groupId>
        <artifactId>dependency-check-maven</artifactId>
        <version>10.0.4</version>
        <configuration>
          <nvdApiServerId>nvd</nvdApiServerId>
        </configuration>
      </plugin>

    </plugins>

  </reporting>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${log4jVersion}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${log4jVersion}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>${log4jVersion}</version>
        <scope>runtime</scope>
      </dependency>

      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junitVersion}</version>
        <scope>test</scope>
      </dependency>
    
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${junitVersion}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <version>${junitVersion}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-suite</artifactId>
        <version>${junitPlatformVersion}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${mockitoVersion}</version>
        <scope>test</scope>
      </dependency>
    
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-junit-jupiter</artifactId>
        <version>${mockitoVersion}</version>
        <scope>test</scope>
      </dependency>

    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>com.github.spotbugs</groupId>
      <artifactId>spotbugs-annotations</artifactId>
      <version>4.8.6</version>
    </dependency>

    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>${log4jVersion}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>${log4jVersion}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <version>${log4jVersion}</version>
      <scope>runtime</scope>
    </dependency>

    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-engine</artifactId>
      <version>${junitVersion}</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <version>${junitVersion}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-params</artifactId>
      <version>${junitVersion}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.junit.platform</groupId>
      <artifactId>junit-platform-suite</artifactId>
      <version>${junitPlatformVersion}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.junit.platform</groupId>
      <artifactId>junit-platform-launcher</artifactId>
      <version>${junitPlatformVersion}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>${mockitoVersion}</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-junit-jupiter</artifactId>
      <version>${mockitoVersion}</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>io.cucumber</groupId>
      <artifactId>cucumber-java</artifactId>
      <version>${cucumberVersion}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>io.cucumber</groupId>
      <artifactId>cucumber-junit-platform-engine</artifactId>
      <version>${cucumberVersion}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>io.cucumber</groupId>
      <artifactId>cucumber-picocontainer</artifactId>
      <version>${cucumberVersion}</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

</project>
