<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2016, 2023 Oracle and/or its affiliates.

    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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>io.helidon</groupId>
        <artifactId>helidon-dependencies</artifactId>
        <version>3.2.2</version>
        <relativePath>./dependencies/pom.xml</relativePath>
    </parent>
    <artifactId>helidon-project</artifactId>
    <packaging>pom</packaging>

    <name>Helidon Project</name>
    <description>Java libraries for writing microservices</description>

    <properties>
        <version.java>17</version.java>

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

        <surefire.argLine>-Xmx1024m -Dfile.encoding=UTF-8</surefire.argLine>
        <failsafe.argLine>-Xmx1024m -Dfile.encoding=UTF-8</failsafe.argLine>
        <surefire.coverage.argline />
        <failsafe.coverage.argline />

        <spotbugs.skip>false</spotbugs.skip>
        <spotbugs.threshold>Medium</spotbugs.threshold>

        <dependency-check.skip>false</dependency-check.skip>
        <checkstyle.skip>false</checkstyle.skip>
        <!--
        !Version statement! - begin

        Changing these version requires approval for a new third party dependency!
        -->
        <version.lib.arquillian>1.7.0.Alpha10</version.lib.arquillian>
        <version.lib.asm>6.0</version.lib.asm>
        <version.lib.checkstyle>9.1</version.lib.checkstyle>
        <version.lib.commons-io>2.11.0</version.lib.commons-io>
        <version.lib.groovy-all>2.4.14</version.lib.groovy-all>
        <!-- Silence javadoc error org.jboss.logging.annotations.Message$Format not found -->
        <version.lib.jboss-logging-annotations>2.2.1.Final</version.lib.jboss-logging-annotations>
        <version.lib.jsoup>1.15.3</version.lib.jsoup>
        <version.lib.junit4>4.13.1</version.lib.junit4>
        <version.lib.kafka-junit5>3.2.3</version.lib.kafka-junit5>
        <version.lib.mockito>2.23.4</version.lib.mockito>
        <version.lib.netty.tcnative>2.0.61.Final</version.lib.netty.tcnative>
        <version.lib.restito>0.9.1</version.lib.restito>
        <version.lib.rxjava2-jdk9-interop>0.1.0</version.lib.rxjava2-jdk9-interop>
        <version.lib.rxjava>2.2.10</version.lib.rxjava>
        <version.lib.scala>2.12.10</version.lib.scala>
        <!-- This is to force upgrade of transitive dep from arquillian -->
        <!-- 2.x versions used http (not https) to access maven central -->
        <version.lib.shrinkwrap-resolver>3.0.1</version.lib.shrinkwrap-resolver>
        <version.lib.spotbugs-annotations>3.1.12</version.lib.spotbugs-annotations>
        <version.lib.surefire.testng>3.0.0-M5</version.lib.surefire.testng>
        <version.lib.test.containers>1.17.5</version.lib.test.containers>
        <version.lib.test.containers.keycloak>2.3.0</version.lib.test.containers.keycloak>
        <version.lib.testng>7.7.0</version.lib.testng>
        <version.lib.zipkin.junit>2.12.5</version.lib.zipkin.junit>
        <version.lib.bedrock>7.0.1</version.lib.bedrock>
        <version.lib.awaitility>3.1.6</version.lib.awaitility>
        <version.lib.weld-junit>3.0.0.Final</version.lib.weld-junit>
        <version.lib.jmh>1.23</version.lib.jmh>
        <version.lib.wiremock>2.26.3</version.lib.wiremock>
        <version.lib.commons-lang3>3.10</version.lib.commons-lang3>
        <version.lib.classgraph>4.8.87</version.lib.classgraph>
        <!--
        !Version statement! - end
        -->

        <!-- maven plugin versions -->
        <version.plugin.archetype-packaging>3.1.2</version.plugin.archetype-packaging>
        <version.plugin.archetype>3.1.2</version.plugin.archetype>
        <version.plugin.build-helper>1.12</version.plugin.build-helper>
        <version.plugin.checkstyle>3.1.2</version.plugin.checkstyle>
        <version.plugin.compiler>3.8.1</version.plugin.compiler>
        <version.plugin.dependency>3.6.0</version.plugin.dependency>
        <version.plugin.directory>1.0</version.plugin.directory>
        <version.plugin.eclipselink>2.7.5.1</version.plugin.eclipselink>
        <version.plugin.enforcer>3.0.0-M1</version.plugin.enforcer>
        <version.plugin.exec>1.6.0</version.plugin.exec>
        <version.plugin.failsafe>3.0.0-M5</version.plugin.failsafe>
        <version.plugin.glassfish-copyright>2.3</version.plugin.glassfish-copyright>
        <version.plugin.helidon-build-tools>3.0.5</version.plugin.helidon-build-tools>
        <version.plugin.hibernate-enhance>${version.lib.hibernate}</version.plugin.hibernate-enhance>
        <version.plugin.jacoco>0.8.5</version.plugin.jacoco>
        <version.plugin.jandex>1.1.0</version.plugin.jandex>
        <version.plugin.jar>3.0.2</version.plugin.jar>
        <version.plugin.javadoc>3.3.1</version.plugin.javadoc>
        <version.plugin.jaxb>2.5.0</version.plugin.jaxb>
        <version.plugin.license>1.16</version.plugin.license>
        <version.plugin.os>1.5.0.Final</version.plugin.os>
        <version.plugin.project-info-reports>3.0.0</version.plugin.project-info-reports>
        <version.plugin.protobuf>0.6.1</version.plugin.protobuf>
        <version.plugin.resources>2.7</version.plugin.resources>
        <version.plugin.scm-publish-plugin>3.0.0</version.plugin.scm-publish-plugin>
        <version.plugin.shade>3.0.0</version.plugin.shade>
        <version.plugin.source>3.0.1</version.plugin.source>
        <version.plugin.spotbugs>4.4.2.2</version.plugin.spotbugs>
        <version.plugin.findsecbugs>1.11.0</version.plugin.findsecbugs>
        <version.plugin.dependency-check>8.3.1</version.plugin.dependency-check>
        <version.plugin.surefire>3.0.0-M5</version.plugin.surefire>
        <version.plugin.toolchains>1.1</version.plugin.toolchains>
        <version.plugin.version-plugin>2.3</version.plugin.version-plugin>
        <version.plugin.buildnumber>1.4</version.plugin.buildnumber>
        <version.plugin.wiremock>2.14.0</version.plugin.wiremock>

        <version.helidon-cli>3.0.0</version.helidon-cli>

        <!-- Links to external javadocs. If you see a hardcoded version it means the javadocs for the version we use is not available. -->
        <javadoc.link.jakarta-jaxrs>https://jakarta.ee/specifications/restful-ws/3.0/apidocs/</javadoc.link.jakarta-jaxrs>
        <javadoc.link.jakarta-cdi>https://jakarta.ee/specifications/cdi/3.0/apidocs/</javadoc.link.jakarta-cdi>
        <javadoc.link.jakarta-jsonb>https://jakarta.ee/specifications/jsonb/2.0/apidocs/</javadoc.link.jakarta-jsonb>
        <javadoc.link.jakarta-persistence>https://jakarta.ee/specifications/persistence/3.0/apidocs/</javadoc.link.jakarta-persistence>
        <javadoc.link.jakarta-jsonp>https://jakarta.ee/specifications/jsonp/2.0/apidocs/</javadoc.link.jakarta-jsonp>
        <javadoc.link.jakarta-inject>https://jakarta.ee/specifications/dependency-injection/2.0/apidocs/</javadoc.link.jakarta-inject>
        <javadoc.link.jakarta-jaxb>https://jakarta.ee/specifications/xml-binding/3.0/apidocs/</javadoc.link.jakarta-jaxb>
        <javadoc.link.jakarta-transaction>https://jakarta.ee/specifications/transactions/2.0/apidocs/</javadoc.link.jakarta-transaction>

        <javadoc.link.microprofile-config>https://download.eclipse.org/microprofile/microprofile-config-${version.lib.microprofile-config}/apidocs/</javadoc.link.microprofile-config>
        <javadoc.link.microprofile-health>https://download.eclipse.org/microprofile/microprofile-health-${version.lib.microprofile-health}/apidocs/</javadoc.link.microprofile-health>
        <javadoc.link.microprofile-metrics>https://download.eclipse.org/microprofile/microprofile-metrics-${version.lib.microprofile-metrics-api}/apidocs/</javadoc.link.microprofile-metrics>
        <javadoc.link.microprofile-fault-tolerance-api>https://download.eclipse.org/microprofile/microprofile-fault-tolerance-${version.lib.microprofile-fault-tolerance-api}/apidocs/</javadoc.link.microprofile-fault-tolerance-api>
        <javadoc.link.microprofile-graphql>https://download.eclipse.org/microprofile/microprofile-graphql-${version.lib.microprofile-graphql}/apidocs/</javadoc.link.microprofile-graphql>
        <javadoc.link.microprofile-jwt>https://download.eclipse.org/microprofile/microprofile-jwt-auth-${version.lib.microprofile-jwt}/apidocs/</javadoc.link.microprofile-jwt>
        <javadoc.link.microprofile-openapi-api>https://download.eclipse.org/microprofile/microprofile-open-api-${version.lib.microprofile-openapi-api}/apidocs/</javadoc.link.microprofile-openapi-api>
        <javadoc.link.microprofile-reactive-messaging-api>https://download.eclipse.org/microprofile/microprofile-reactive-messaging-${version.lib.microprofile-reactive-messaging-api}/apidocs/</javadoc.link.microprofile-reactive-messaging-api>
        <javadoc.link.microprofile-reactive-streams-operators-api>https://download.eclipse.org/microprofile/microprofile-reactive-streams-operators-${version.lib.microprofile-reactive-streams-operators-api}/apidocs</javadoc.link.microprofile-reactive-streams-operators-api>
        <javadoc.link.microprofile-rest-client>https://download.eclipse.org/microprofile/microprofile-rest-client-${version.lib.microprofile-rest-client}/apidocs</javadoc.link.microprofile-rest-client>
        <javadoc.link.microprofile-tracing>https://download.eclipse.org/microprofile/microprofile-opentracing-${version.lib.microprofile-tracing}/apidocs/</javadoc.link.microprofile-tracing>
        <javadoc.link.microprofile-lra-api>https://download.eclipse.org/microprofile/microprofile-lra-${version.lib.microprofile-lra-api}/apidocs/</javadoc.link.microprofile-lra-api>


        <javadoc.link.jersey>https://eclipse-ee4j.github.io/jersey.github.io/apidocs/${version.lib.jersey}/jersey</javadoc.link.jersey>
        <javadoc.link.weld>https://docs.jboss.org/weld/javadoc/3.0/weld-spi/</javadoc.link.weld>
        <javadoc.link.narayana>http://narayana.io/docs/api/</javadoc.link.narayana>
        <javadoc.link.eclipselink>https://www.eclipse.org/eclipselink/api/3.0/</javadoc.link.eclipselink>

        <javadoc.jackson.version>2.12</javadoc.jackson.version>
        <javadoc.link.jackson-annotations>https://fasterxml.github.io/jackson-annotations/javadoc/${javadoc.jackson.version}/</javadoc.link.jackson-annotations>
        <javadoc.link.jackson-core>https://fasterxml.github.io/jackson-core/javadoc/${javadoc.jackson.version}/</javadoc.link.jackson-core>
        <javadoc.link.jackson-databind>https://fasterxml.github.io/jackson-databind/javadoc/${javadoc.jackson.version}/</javadoc.link.jackson-databind>
        <javadoc.link.netty>https://static.javadoc.io/io.netty/netty-transport/${version.lib.netty}</javadoc.link.netty>
        <javadoc.link.netty-transport>https://static.javadoc.io/io.netty/netty-transport/${version.lib.netty}</javadoc.link.netty-transport>
        <javadoc.link.reactive-streams>http://www.reactive-streams.org/reactive-streams-${version.lib.reactivestreams}-javadoc</javadoc.link.reactive-streams>
        <javadoc.link.typesafe-config>https://static.javadoc.io/com.typesafe/config/${version.lib.typesafe-config}</javadoc.link.typesafe-config>
        <javadoc.link.opentracing>https://static.javadoc.io/io.opentracing/opentracing-api/${version.lib.opentracing}</javadoc.link.opentracing>
        <javadoc.link.prometheus>https://static.javadoc.io/io.prometheus/simpleclient/${version.lib.prometheus}</javadoc.link.prometheus>
        <javadoc.link.zipkin>https://static.javadoc.io/io.zipkin.reporter2/zipkin-reporter/2.12.3</javadoc.link.zipkin>

        <!--suppress UnresolvedMavenProperty -->
        <javadoc.packagelist.dir>${top.parent.basedir}/etc/javadoc</javadoc.packagelist.dir>
        <site.output.dir>${project.build.directory}/docs</site.output.dir>
    </properties>

    <modules>
        <module>parent</module>
        <module>dependencies</module>
        <module>bom</module>
        <module>applications</module>
        <module>licensing</module>
        <module>common</module>
        <module>config</module>
        <module>media</module>
        <module>webserver</module>
        <module>security</module>
        <module>lra</module>
        <module>microprofile</module>
        <module>tracing</module>
        <module>bundles</module>
        <module>metrics</module>
        <module>health</module>
        <module>grpc</module>
        <module>openapi</module>
        <module>jersey</module>
        <module>webclient</module>
        <module>integrations</module>
        <module>dbclient</module>
        <module>messaging</module>
        <module>fault-tolerance</module>
        <module>graphql</module>
        <module>logging</module>
        <module>scheduling</module>
        <module>service-common</module>
    </modules>



    <build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>${version.plugin.os}</version>
            </extension>
        </extensions>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${version.plugin.compiler}</version>
                    <configuration>
                        <source>${version.java}</source>
                        <target>${version.java}</target>
                        <release>${version.java}</release>
                        <forceJavacCompilerUse>true</forceJavacCompilerUse>
                        <compilerArgs>
                            <arg>-Xlint:unchecked</arg>
                            <!--
                            https://issues.apache.org/jira/browse/MCOMPILER-368
                             -->
                            <arg>-Xpkginfo:always</arg>
                        </compilerArgs>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${version.plugin.javadoc}</version>
                    <configuration>
                        <source>${version.java}</source>
                        <failOnError>true</failOnError>
                        <!-- we are not interested in each file that is generated -->
                        <quiet>true</quiet>
                        <!--<verbose>true</verbose>-->
                        <isOffline>true</isOffline>
                        <offlineLinks>
                            <offlineLink>
                                <url>${javadoc.link.jackson-annotations}</url>
                                <location>${javadoc.packagelist.dir}/jackson-annotations</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.jackson-core}</url>
                                <location>${javadoc.packagelist.dir}/jackson-core</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.jackson-databind}</url>
                                <location>${javadoc.packagelist.dir}/jackson-databind</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.jakarta-jaxrs}</url>
                                <location>${javadoc.packagelist.dir}/jakarta-jaxrs</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.netty}</url>
                                <location>${javadoc.packagelist.dir}/netty</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.jakarta-cdi}</url>
                                <location>${javadoc.packagelist.dir}/jakarta-cdi</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.jakarta-inject}</url>
                                <location>${javadoc.packagelist.dir}/jakarta-inject</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.reactive-streams}</url>
                                <location>${javadoc.packagelist.dir}/reactive-streams</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.jersey}</url>
                                <location>${javadoc.packagelist.dir}/jersey</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.typesafe-config}</url>
                                <location>${javadoc.packagelist.dir}/typesafe-config</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.netty-transport}</url>
                                <location>${javadoc.packagelist.dir}/netty-transport</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.opentracing}</url>
                                <location>${javadoc.packagelist.dir}/opentracing</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.prometheus}</url>
                                <location>${javadoc.packagelist.dir}/prometheus</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.zipkin}</url>
                                <location>${javadoc.packagelist.dir}/zipkin</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.jakarta-jsonb}</url>
                                <location>${javadoc.packagelist.dir}/jakarta-jsonb</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.jakarta-persistence}</url>
                                <location>${javadoc.packagelist.dir}/jakarta-persistence</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.jakarta-jsonp}</url>
                                <location>${javadoc.packagelist.dir}/jakarta-jsonp</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.jakarta-jaxb}</url>
                                <location>${javadoc.packagelist.dir}/jakarta-jaxb</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.jakarta-transaction}</url>
                                <location>${javadoc.packagelist.dir}/jakarta-transaction</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.microprofile-config}</url>
                                <location>${javadoc.packagelist.dir}/microprofile-config</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.microprofile-health}</url>
                                <location>${javadoc.packagelist.dir}/microprofile-health</location>
                            </offlineLink>

                            <offlineLink>
                                <url>${javadoc.link.microprofile-metrics}</url>
                                <location>${javadoc.packagelist.dir}/microprofile-metrics</location>
                            </offlineLink>

                            <offlineLink>
                                <url>${javadoc.link.microprofile-fault-tolerance-api}</url>
                                <location>${javadoc.packagelist.dir}/microprofile-fault-tolerance-api</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.microprofile-graphql}</url>
                                <location>${javadoc.packagelist.dir}/microprofile-graphql</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.microprofile-jwt}</url>
                                <location>${javadoc.packagelist.dir}/microprofile-jwt</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.microprofile-lra-api}</url>
                                <location>${javadoc.packagelist.dir}/microprofile-lra-api</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.microprofile-openapi-api}</url>
                                <location>${javadoc.packagelist.dir}/microprofile-openapi-api</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.microprofile-reactive-messaging-api}</url>
                                <location>${javadoc.packagelist.dir}/microprofile-reactive-messaging-api</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.microprofile-reactive-streams-operators-api}</url>
                                <location>${javadoc.packagelist.dir}/microprofile-reactive-streams-operators-api</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.microprofile-rest-client}</url>
                                <location>${javadoc.packagelist.dir}/microprofile-rest-client</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.microprofile-tracing}</url>
                                <location>${javadoc.packagelist.dir}/microprofile-tracing</location>
                            </offlineLink>

                            <offlineLink>
                                <url>${javadoc.link.weld}</url>
                                <location>${javadoc.packagelist.dir}/weld</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.narayana}</url>
                                <location>${javadoc.packagelist.dir}/narayana</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.eclipselink}</url>
                                <location>${javadoc.packagelist.dir}/eclipselink</location>
                            </offlineLink>
                        </offlineLinks>
                        <additionalJOptions combine.children="append">
                            <additionalJOption>-J-Dhttp.agent=maven-javadoc-plugin</additionalJOption>
                        </additionalJOptions>
                        <additionalOptions>
                            <!--<additionalOption> - -add-stylesheet ${top.parent.basedir}/etc/helidon-javadoc.css</additionalOption>-->
                        </additionalOptions>
                        <!-- <excludePackageNames>io.helidon.config.tests.*:io.helidon.config.testing.*:io.helidon.config.test.*</excludePackageNames> -->
                        <sourceFileExcludes>
                            <sourceFileExclude>**/target/**/*.java</sourceFileExclude>
                            <sourceFileExclude>**/*_.java</sourceFileExclude>
                        </sourceFileExcludes>
                        <dependencySourceExcludes>

                        </dependencySourceExcludes>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>${version.plugin.project-info-reports}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>${version.plugin.source}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>${version.plugin.enforcer}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-toolchains-plugin</artifactId>
                    <version>${version.plugin.toolchains}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${version.plugin.surefire}</version>
                    <configuration>
                        <useModulePath>false</useModulePath>
                        <trimStackTrace>false</trimStackTrace>
                        <!-- DO NOT override argLine instead use surefire.argLine -->
                        <argLine>${surefire.argLine} ${surefire.coverage.argline}</argLine>
                        <redirectTestOutputToFile>true</redirectTestOutputToFile>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>${version.plugin.failsafe}</version>
                    <configuration>
                        <useModulePath>false</useModulePath>
                        <!-- DO NOT override argLine instead use failsafe.argLine -->
                        <argLine>${failsafe.argLine} ${failsafe.coverage.argline}</argLine>
                        <redirectTestOutputToFile>true</redirectTestOutputToFile>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.commonjava.maven.plugins</groupId>
                    <artifactId>directory-maven-plugin</artifactId>
                    <version>${version.plugin.directory}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>${version.plugin.exec}</version>
                </plugin>
                <plugin>
                    <groupId>org.jboss.jandex</groupId>
                    <artifactId>jandex-maven-plugin</artifactId>
                    <version>${version.plugin.jandex}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>${version.plugin.jar}</version>
                    <configuration>
                        <archive>
                            <manifest>
                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            </manifest>
                            <manifestEntries>
                                <Implementation-URL>https://helidon.io</Implementation-URL>
                                <Scm-Revision>${buildNumber}</Scm-Revision>
                            </manifestEntries>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>${version.plugin.resources}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>${version.plugin.dependency}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-scm-publish-plugin</artifactId>
                    <version>${version.plugin.scm-publish-plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.glassfish.copyright</groupId>
                    <artifactId>glassfish-copyright-maven-plugin</artifactId>
                    <version>${version.plugin.glassfish-copyright}</version>
                    <configuration>
                        <!--suppress UnresolvedMavenProperty -->
                        <templateFile>${copyright.template}</templateFile>
                        <!--suppress UnresolvedMavenProperty -->
                        <excludeFile>${copyright.exclude}</excludeFile>
                        <scm>git</scm>
                        <debug>false</debug>
                        <scmOnly>true</scmOnly>
                        <warn>true</warn>
                        <ignoreYear>false</ignoreYear>
                        <useDash>false</useDash>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>${version.plugin.checkstyle}</version>
                    <configuration>
                        <skip>${checkstyle.skip}</skip>
                        <sourceDirectories>
                            <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
                        </sourceDirectories>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>com.puppycrawl.tools</groupId>
                            <artifactId>checkstyle</artifactId>
                            <version>${version.lib.checkstyle}</version>
                            <exclusions>
                                <exclusion>
                                    <groupId>com.sun</groupId>
                                    <artifactId>tools</artifactId>
                                </exclusion>
                            </exclusions>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>com.github.spotbugs</groupId>
                    <artifactId>spotbugs-maven-plugin</artifactId>
                    <version>${version.plugin.spotbugs}</version>
                    <configuration>
                        <omitVisitors>FindReturnRef</omitVisitors>
                        <skip>${spotbugs.skip}</skip>
                        <threshold>${spotbugs.threshold}</threshold>
                        <!--suppress UnresolvedMavenProperty -->
                        <excludeFilterFile>${spotbugs.exclude}</excludeFilterFile>
                        <xmlOutput>true</xmlOutput>
                        <plugins>
                            <plugin>
                                <groupId>com.h3xstream.findsecbugs</groupId>
                                <artifactId>findsecbugs-plugin</artifactId>
                                <version>${version.plugin.findsecbugs}</version>
                            </plugin>
                        </plugins>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.owasp</groupId>
                    <artifactId>dependency-check-maven</artifactId>
                    <version>${version.plugin.dependency-check}</version>
                    <configuration>
                        <skip>${dependency-check.skip}</skip>
                        <skipTestScope>true</skipTestScope>
                        <failBuildOnAnyVulnerability>false</failBuildOnAnyVulnerability>
                        <assemblyAnalyzerEnabled>false</assemblyAnalyzerEnabled>
                        <excludes>
                            <!-- Exclude stuff we do not deploy -->
                            <exclude>io.helidon.tracing:helidon-tracing-tests</exclude>
                            <exclude>io.helidon.config.tests*</exclude>
                            <exclude>io.helidon.test*</exclude>
                            <exclude>io.helidon.examples*</exclude>
                            <exclude>io.helidon.microprofile.tests*</exclude>
                            <!-- This should be excluded by above, but for some reason it persists -->
                            <exclude>org.testng:testng</exclude>
                        </excludes>
                        <formats>
                            <format>HTML</format>
                            <format>CSV</format>
                        </formats>
                        <suppressionFiles>
                            <!--suppress UnresolvedMavenProperty -->
                            <suppressionFile>${top.parent.basedir}/etc/dependency-check-suppression.xml</suppressionFile>
                        </suppressionFiles>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.xolstice.maven.plugins</groupId>
                    <artifactId>protobuf-maven-plugin</artifactId>
                    <version>${version.plugin.protobuf}</version>
                    <configuration>
                        <!--suppress UnresolvedMavenProperty -->
                        <protocArtifact>com.google.protobuf:protoc:${version.lib.google-protobuf}:exe:${os.detected.classifier}</protocArtifact>
                        <pluginId>grpc-java</pluginId>
                        <!--suppress UnresolvedMavenProperty -->
                        <pluginArtifact>
                            io.grpc:protoc-gen-grpc-java:${version.lib.grpc}:exe:${os.detected.classifier}
                        </pluginArtifact>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>${version.plugin.build-helper}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>license-maven-plugin</artifactId>
                    <version>${version.plugin.license}</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.doxia</groupId>
                            <artifactId>doxia-core</artifactId>
                            <version>1.6</version>
                        </dependency>
                        <dependency>
                            <groupId>org.apache.maven.doxia</groupId>
                            <artifactId>doxia-site-renderer</artifactId>
                            <version>1.6</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.hibernate.orm.tooling</groupId>
                    <artifactId>hibernate-enhance-maven-plugin</artifactId>
                    <version>${version.plugin.hibernate-enhance}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>jaxb2-maven-plugin</artifactId>
                    <version>${version.plugin.jaxb}</version>
                    <dependencies>
                        <!-- Force upgrade version to use jakarta packages. -->
                        <dependency>
                            <groupId>org.glassfish.jaxb</groupId>
                            <artifactId>jaxb-xjc</artifactId>
                            <version>${version.lib.jaxb-runtime}</version>
                        </dependency>
                        <dependency>
                            <groupId>com.sun.xml.bind</groupId>
                            <artifactId>jaxb-impl</artifactId>
                            <version>${version.lib.jaxb-runtime}</version>
                        </dependency>
                        <dependency>
                            <groupId>jakarta.activation</groupId>
                            <artifactId>jakarta.activation-api</artifactId>
                            <version>${version.lib.jakarta.activation-api}</version>
                        </dependency>
                        <dependency>
                            <groupId>jakarta.xml.bind</groupId>
                            <artifactId>jakarta.xml.bind-api</artifactId>
                            <version>${version.lib.jakarta.xml.bind-api}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>buildnumber-maven-plugin</artifactId>
                    <version>${version.plugin.buildnumber}</version>
                    <executions>
                        <execution>
                            <phase>validate</phase>
                            <goals>
                                <goal>create</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>${version.plugin.shade}</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.ow2.asm</groupId>
                            <artifactId>asm</artifactId>
                            <version>${version.lib.asm}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.ow2.asm</groupId>
                            <artifactId>asm-commons</artifactId>
                            <version>${version.lib.asm}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-archetype-plugin</artifactId>
                    <version>${version.plugin.archetype}</version>
                </plugin>
                <plugin>
                    <groupId>uk.co.automatictester</groupId>
                    <artifactId>wiremock-maven-plugin</artifactId>
                    <version>${version.plugin.wiremock}</version>
                </plugin>
                <plugin>
                    <groupId>io.helidon.build-tools</groupId>
                    <artifactId>sitegen-maven-plugin</artifactId>
                    <version>${version.plugin.helidon-build-tools}</version>
                    <configuration>
                        <siteSourceDirectory>docs</siteSourceDirectory>
                        <siteConfigFile>docs/sitegen.yaml</siteConfigFile>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>io.helidon.build-tools</groupId>
                    <artifactId>snakeyaml-codegen-maven-plugin</artifactId>
                    <version>${version.plugin.helidon-build-tools}</version>
                </plugin>
                <plugin>
                    <groupId>io.helidon.build-tools</groupId>
                    <artifactId>helidon-stager-maven-plugin</artifactId>
                    <version>${version.plugin.helidon-build-tools}</version>
                </plugin>
                <plugin>
                    <groupId>io.helidon.build-tools</groupId>
                    <artifactId>helidon-maven-plugin</artifactId>
                    <version>${version.plugin.helidon-build-tools}</version>
                </plugin>
                <plugin>
                    <groupId>io.helidon.build-tools</groupId>
                    <artifactId>helidon-enforcer-plugin</artifactId>
                    <version>${version.plugin.helidon-build-tools}</version>
                    <configuration>
                        <rules>
                            <rule>copyright</rule>
                            <rule>typos</rule>
                        </rules>
                        <copyrightConfig>
                            <failOnError>true</failOnError>
                            <!--suppress UnresolvedMavenProperty -->
                            <templateFile>${top.parent.basedir}/etc/copyright.txt</templateFile>
                            <!--suppress UnresolvedMavenProperty -->
                            <excludeFile>${top.parent.basedir}/etc/copyright-exclude.txt</excludeFile>
                        </copyrightConfig>
                        <typosConfig>
                            <failOnError>true</failOnError>
                            <typos>
                                <typo>heldion</typo>
                                <typo>helidion</typo>
                                <typo>buidler</typo>
                                <typo>vuilder</typo>
                                <typo>bidler</typo>
                            </typos>
                        </typosConfig>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>io.helidon.build-tools</groupId>
                    <artifactId>helidon-services-plugin</artifactId>
                    <version>${version.plugin.helidon-build-tools}</version>
                    <configuration>
                        <mode>fail</mode>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <id>enforce-dependencies</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <dependencyConvergence>
                                    <uniqueVersions>true</uniqueVersions>
                                </dependencyConvergence>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.commonjava.maven.plugins</groupId>
                <artifactId>directory-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>generate-top-parent-basedir</id>
                        <goals>
                            <goal>highest-basedir</goal>
                        </goals>
                        <phase>validate</phase>
                        <configuration>
                            <property>top.parent.basedir</property>
                        </configuration>
                    </execution>
                    <execution>
                        <id>generate-top-parent-basedir-site</id>
                        <goals>
                            <goal>highest-basedir</goal>
                        </goals>
                        <phase>pre-site</phase>
                        <configuration>
                            <property>top.parent.basedir</property>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-license</id>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <phase>process-sources</phase>
                        <configuration>
                            <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                            <resources>
                                <resource>
                                    <!--suppress UnresolvedMavenProperty -->
                                    <directory>${top.parent.basedir}/licensing/templates</directory>
                                    <targetPath>META-INF/</targetPath>
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>LICENSE.txt</include>
                                        <include>NOTICE.txt</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <configuration>
                    <configLocation>/etc/checkstyle.xml</configLocation>
                    <suppressionsLocation>/etc/checkstyle-suppressions.xml</suppressionsLocation>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <inherited>false</inherited>
                <configuration>
                    <skip>false</skip>
                    <siteDirectory>docs</siteDirectory>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>io.helidon.build-tools</groupId>
                        <artifactId>sitegen-maven-plugin</artifactId>
                        <version>${version.plugin.helidon-build-tools}</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>io.helidon.build-tools</groupId>
                <artifactId>sitegen-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>io.helidon.build-tools</groupId>
                <artifactId>helidon-services-plugin</artifactId>
                <executions>
                    <execution>
                        <id>generate-meta-inf-services</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>services</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka_2.12</artifactId>
                <version>${version.lib.kafka}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.zookeeper</groupId>
                        <artifactId>zookeeper</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.scala-lang</groupId>
                        <artifactId>scala-library</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.scala-lang</groupId>
                        <artifactId>scala-reflect</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.salesforce.kafka.test</groupId>
                <artifactId>kafka-junit5</artifactId>
                <version>${version.lib.kafka-junit5}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.zookeeper</groupId>
                        <artifactId>zookeeper</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>${version.lib.zookeeper}</version>
            </dependency>
            <dependency>
                <groupId>org.scala-lang</groupId>
                <artifactId>scala-library</artifactId>
                <scope>test</scope>
                <version>${version.lib.scala}</version>
            </dependency>
            <dependency>
                <groupId>io.opentracing</groupId>
                <artifactId>opentracing-mock</artifactId>
                <version>${version.lib.opentracing}</version>
            </dependency>
            <dependency>
                <groupId>com.github.akarnokd</groupId>
                <artifactId>rxjava2-jdk9-interop</artifactId>
                <version>${version.lib.rxjava2-jdk9-interop}</version>
            </dependency>
            <dependency>
                <groupId>io.reactivex.rxjava2</groupId>
                <artifactId>rxjava</artifactId>
                <version>${version.lib.rxjava}</version>
            </dependency>
            <dependency>
                <groupId>com.xebialabs.restito</groupId>
                <artifactId>restito</artifactId>
                <version>${version.lib.restito}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-tcnative-boringssl-static</artifactId>
                <version>${version.lib.netty.tcnative}</version>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>${version.lib.mockito}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jgit</groupId>
                <artifactId>org.eclipse.jgit.junit</artifactId>
                <version>${version.lib.jgit}</version>
            </dependency>
            <dependency>
                <groupId>io.zipkin.zipkin2</groupId>
                <artifactId>zipkin-junit</artifactId>
                <version>${version.lib.zipkin.junit}</version>
            </dependency>
            <dependency>
                <groupId>com.oracle.bedrock</groupId>
                <artifactId>bedrock-testing-support</artifactId>
                <version>${version.lib.bedrock}</version>
            </dependency>
            <dependency>
                <groupId>com.github.spotbugs</groupId>
                <artifactId>spotbugs-annotations</artifactId>
                <version>${version.lib.spotbugs-annotations}</version>
            </dependency>
            <dependency>
                <groupId>org.reactivestreams</groupId>
                <artifactId>reactive-streams-tck-flow</artifactId>
                <version>${version.lib.reactivestreams}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-provider-api</artifactId>
                <version>${version.lib.maven-wagon}</version>
            </dependency>
            <dependency>
                <!--
                Required for dependency convergence
                Used by both
                io.rest-assured:rest-assured (from metrics rest TCK)
                hamcrest-integration (from metrics API TCK)
                -->
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-library</artifactId>
                <version>${version.lib.hamcrest}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.weld.se</groupId>
                <artifactId>weld-se-core</artifactId>
                <version>${version.lib.weld}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.codehaus.groovy</groupId>
                        <artifactId>groovy-all</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.jboss.weld</groupId>
                <artifactId>weld-junit5</artifactId>
                <version>${version.lib.weld-junit}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.health</groupId>
                <artifactId>microprofile-health-tck</artifactId>
                <version>${version.lib.microprofile-health}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.jwt</groupId>
                <artifactId>microprofile-jwt-auth-tck</artifactId>
                <version>${version.lib.microprofile-jwt}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.jwt</groupId>
                <artifactId>microprofile-jwt-auth-tck</artifactId>
                <version>${version.lib.microprofile-jwt}</version>
                <type>test-jar</type>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.fault-tolerance</groupId>
                <artifactId>microprofile-fault-tolerance-tck</artifactId>
                <version>${version.lib.microprofile-fault-tolerance-api}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.opentracing</groupId>
                <artifactId>microprofile-opentracing-tck</artifactId>
                <version>${version.lib.microprofile-tracing}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.opentracing</groupId>
                <artifactId>microprofile-opentracing-tck-rest-client</artifactId>
                <version>${version.lib.microprofile-tracing}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.rest.client</groupId>
                <artifactId>microprofile-rest-client-tck</artifactId>
                <version>${version.lib.microprofile-rest-client}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.openapi</groupId>
                <artifactId>microprofile-openapi-tck</artifactId>
                <version>${version.lib.microprofile-openapi-api}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.reactive-streams-operators</groupId>
                <artifactId>microprofile-reactive-streams-operators-tck</artifactId>
                <version>${version.lib.microprofile-reactive-streams-operators-api}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.reactive.messaging</groupId>
                <artifactId>microprofile-reactive-messaging-tck</artifactId>
                <version>${version.lib.microprofile-reactive-messaging-api}</version>
            </dependency>
            <dependency>
                <groupId>org.testng</groupId>
                <artifactId>testng</artifactId>
                <version>${version.lib.testng}</version>
                    <exclusions>
                        <exclusion>
                            <groupId>com.google.code.findbugs</groupId>
                            <artifactId>jsr305</artifactId>
                        </exclusion>
                    </exclusions>
            </dependency>
            <dependency>
                <groupId>org.jboss.arquillian.junit</groupId>
                <artifactId>arquillian-junit-container</artifactId>
                <version>${version.lib.arquillian}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.arquillian.testenricher</groupId>
                <artifactId>arquillian-testenricher-cdi-jakarta</artifactId>
                <version>${version.lib.arquillian}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.arquillian.container</groupId>
                <artifactId>arquillian-container-test-spi</artifactId>
                <version>${version.lib.arquillian}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.arquillian.protocol</groupId>
                <artifactId>arquillian-protocol-servlet</artifactId>
                <version>${version.lib.arquillian}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.arquillian.testng</groupId>
                <artifactId>arquillian-testng-container</artifactId>
                <version>${version.lib.arquillian}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.arquillian.test</groupId>
                <artifactId>arquillian-test-spi</artifactId>
                <version>${version.lib.arquillian}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.arquillian.container</groupId>
                <artifactId>arquillian-container-spi</artifactId>
                <version>${version.lib.arquillian}</version>
            </dependency>
            <!-- Force update of shrinkwrap version used by arquillian -->
            <dependency>
                <groupId>org.jboss.shrinkwrap.resolver</groupId>
                <artifactId>shrinkwrap-resolver-impl-maven</artifactId>
                <version>${version.lib.shrinkwrap-resolver}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.shrinkwrap.resolver</groupId>
                <artifactId>shrinkwrap-resolver-api-maven</artifactId>
                <version>${version.lib.shrinkwrap-resolver}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.config</groupId>
                <artifactId>microprofile-config-tck</artifactId>
                <version>${version.lib.microprofile-config}</version>
                <exclusions>
                    <exclusion>
                        <!--
                        There is a security issue in this dependency.
                        If needed, add a dependency management for version >= 2.0b6
                        -->
                        <groupId>org.beanshell</groupId>
                        <artifactId>bsh</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.awaitility</groupId>
                <artifactId>awaitility</artifactId>
                <version>${version.lib.awaitility}</version>
            </dependency>
            <dependency>
                <groupId>org.openjdk.jmh</groupId>
                <artifactId>jmh-core</artifactId>
                <version>${version.lib.jmh}</version>
            </dependency>
            <dependency>
                <groupId>org.openjdk.jmh</groupId>
                <artifactId>jmh-generator-annprocess</artifactId>
                <version>${version.lib.jmh}</version>
            </dependency>
            <dependency>
                <groupId>com.github.tomakehurst</groupId>
                <artifactId>wiremock</artifactId>
                <version>${version.lib.wiremock}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.commons</groupId>
                        <artifactId>commons-lang3</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${version.lib.commons-lang3}</version>
            </dependency>
            <dependency>
                <!-- used for classpath scanning in native image extension -->
                <groupId>io.github.classgraph</groupId>
                <artifactId>classgraph</artifactId>
                <version>${version.lib.classgraph}</version>
            </dependency>
            <!-- Used for OIDC integration tests -->
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>testcontainers</artifactId>
                <version>${version.lib.test.containers}</version>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>junit-jupiter</artifactId>
                <version>${version.lib.test.containers}</version>
            </dependency>
            <dependency>
                <groupId>com.github.dasniko</groupId>
                <artifactId>testcontainers-keycloak</artifactId>
                <version>${version.lib.test.containers.keycloak}</version>
            </dependency>
            <dependency>
                <groupId>org.jsoup</groupId>
                <artifactId>jsoup</artifactId>
                <version>${version.lib.jsoup}</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>${version.lib.commons-io}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <reporting>
        <excludeDefaults>true</excludeDefaults>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>${version.plugin.javadoc}</version>
                <configuration>
                    <!-- Default configuration for all reports -->
                </configuration>
                <reportSets>
                    <reportSet>
                        <id>default</id>
                        <inherited>false</inherited>
                        <configuration>
                            <skip>false</skip>
                            <skippedModules>
helidon-parent,helidon-dependencies,helidon-bom,helidon-se,helidon-mp,io.grpc,helidon-mp-graal-native-image-extension,helidon-graal-native-image-extension,helidon-config-test-infrastructure,helidon-webserver-test-support
                            </skippedModules>
                            <excludePackageNames>io.grpc</excludePackageNames>
                            <sourceFileExcludes>
                                <sourceFileExclude>**/target/**/*.java</sourceFileExclude>
                                <sourceFileExclude>**/internal/**/*.java</sourceFileExclude>
                                <sourceFileExclude>**/test/**/*.java</sourceFileExclude>
                                <sourceFileExclude>**/*_.java</sourceFileExclude>
                                <sourceFileExclude>**/io/grpc/stub/**/*.java</sourceFileExclude>
                            </sourceFileExcludes>
                            <additionalDependencies>
                                <additionalDependency>
                                    <groupId>org.jboss.logging</groupId>
                                    <artifactId>jboss-logging-annotations</artifactId>
                                    <version>${version.lib.jboss-logging-annotations}</version>
                                </additionalDependency>
                            </additionalDependencies>
                        </configuration>
                        <reports>
                            <report>aggregate-no-fork</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
        </plugins>
    </reporting>

    <profiles>
        <profile>
            <id>tests</id>
            <modules>
                <module>tests</module>
            </modules>
        </profile>
        <profile>
            <id>examples</id>
            <modules>
                <module>examples</module>
            </modules>
        </profile>
        <profile>
            <id>archetypes</id>
            <modules>
                <module>archetypes</module>
            </modules>
        </profile>
        <profile>
            <id>sources</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>javadoc</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>spotbugs</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.github.spotbugs</groupId>
                        <artifactId>spotbugs-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>dependency-check</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.owasp</groupId>
                        <artifactId>dependency-check-maven</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>checkstyle</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-checkstyle-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>run-checkstyle</id>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <phase>validate</phase>
                                <configuration>
                                    <!--suppress UnresolvedMavenProperty -->
                                    <configLocation>${top.parent.basedir}/etc/checkstyle.xml</configLocation>
                                    <!--suppress UnresolvedMavenProperty -->
                                    <suppressionsLocation>${top.parent.basedir}/etc/checkstyle-suppressions.xml</suppressionsLocation>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>copyright</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>io.helidon.build-tools</groupId>
                        <artifactId>helidon-enforcer-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>helidon-enforcer</id>
                                <phase>validate</phase>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>coverage</id>
            <properties>
                <jacoco.report-missing.force-zere>true</jacoco.report-missing.force-zere>
                <!-- top.parent.basedir is generated by directory:highest-basedir -->
                <!--suppress UnresolvedMavenProperty -->
                <jacoco.outputDir>${top.parent.basedir}/target</jacoco.outputDir>
                <jacoco.report.path>${jacoco.outputDir}/jacoco.exec</jacoco.report.path>
                <jacoco.report.it.path>${jacoco.outputDir}/jacoco-it.exec</jacoco.report.it.path>
                <!-- jacoco.agent.*.arg properties are generated by jacoco:prepare-agent -->
                <!--suppress UnresolvedMavenProperty -->
                <surefire.coverage.argline>${jacoco.agent.ut.arg}</surefire.coverage.argline>
                <!--suppress UnresolvedMavenProperty -->
                <failsafe.coverage.argline>${jacoco.agent.it.arg}</failsafe.coverage.argline>
                <maven.test.failure.ignore>true</maven.test.failure.ignore>
            </properties>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-surefire-plugin</artifactId>
                            <configuration>
                                <rerunFailingTestsCount>10</rerunFailingTestsCount>
                                <properties>
                                    <property>
                                        <name>listener</name>
                                        <value>org.sonar.java.jacoco.JUnitListener</value>
                                    </property>
                                </properties>
                            </configuration>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-failsafe-plugin</artifactId>
                            <configuration>
                                <rerunFailingTestsCount>10</rerunFailingTestsCount>
                                <properties>
                                    <property>
                                        <name>listener</name>
                                        <value>org.sonar.java.jacoco.JUnitListener</value>
                                    </property>
                                </properties>
                                <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
                            </configuration>
                        </plugin>
                        <plugin>
                            <groupId>org.jacoco</groupId>
                            <artifactId>jacoco-maven-plugin</artifactId>
                            <version>${version.plugin.jacoco}</version>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>prepare-ut-agent</id>
                                <phase>process-test-classes</phase>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                                <configuration>
                                    <destFile>${jacoco.report.path}</destFile>
                                    <propertyName>jacoco.agent.ut.arg</propertyName>
                                    <append>true</append>
                                </configuration>
                            </execution>
                            <execution>
                                <id>prepare-it-agent</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                                <configuration>
                                    <destFile>${jacoco.report.it.path}</destFile>
                                    <propertyName>jacoco.agent.it.arg</propertyName>
                                    <append>true</append>
                                </configuration>
                            </execution>
                            <execution>
                                <id>jacoco-report-unit-tests</id>
                                <phase>test</phase>
                                <goals>
                                    <goal>report</goal>
                                </goals>
                                <configuration>
                                    <dataFile>${jacoco.report.path}</dataFile>
                                    <outputDirectory>${project.build.directory}/jacoco</outputDirectory>
                                </configuration>
                            </execution>
                            <execution>
                                <id>jacoco-report-integration-tests</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>report-integration</goal>
                                </goals>
                                <configuration>
                                    <dataFile>${jacoco.report.it.path}</dataFile>
                                    <outputDirectory>${project.build.directory}/jacoco-it</outputDirectory>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-enforcer-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>enforce-no-snapshots</id>
                                <goals>
                                    <goal>enforce</goal>
                                </goals>
                                <phase>validate</phase>
                                <configuration>
                                    <rules>
                                        <requireReleaseDeps>
                                            <message>No snapshots allowed during the release build!</message>
                                        </requireReleaseDeps>
                                    </rules>
                                    <fail>true</fail>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <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-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>toolchain</id>
            <activation>
                <file>
                    <exists>${user.home}/.m2/toolchains.xml</exists>
                </file>
            </activation>
            <properties>
                <jdkToolchainVersion>${java.vm.specification.version}</jdkToolchainVersion>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-toolchains-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>toolchain</goal>
                                </goals>
                                <configuration>
                                    <toolchains>
                                        <jdk>
                                            <version>${jdkToolchainVersion}</version>
                                        </jdk>
                                    </toolchains>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>loom</id>
            <activation>
                <jdk>18-loom</jdk>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-compiler-plugin</artifactId>
                            <configuration>
                                <source>18</source>
                                <target>18</target>
                                <release>18</release>
                            </configuration>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-javadoc-plugin</artifactId>
                            <configuration>
                                <source>18</source>
                                <release>18</release>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
    </profiles>
</project>
