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

    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>io.helidon</groupId>
        <artifactId>helidon-dependencies</artifactId>
        <version>1.4.14</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>
        <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>
        <!--
        !Version statement! - begin

        Changing these version requires approval for a new third party dependency!
        -->
        <version.lib.arquillian>1.4.0.Final</version.lib.arquillian>
        <version.lib.arquillian-weld-embedded>2.0.0.Final</version.lib.arquillian-weld-embedded>
        <version.lib.asciidoctor.diagram>1.5.4.1</version.lib.asciidoctor.diagram>
        <version.lib.asm>6.0</version.lib.asm>
        <version.lib.checkstyle>8.29</version.lib.checkstyle>
        <version.lib.classfilewriter>1.2.4.Final</version.lib.classfilewriter>
        <version.lib.groovy-all>2.4.14</version.lib.groovy-all>
        <version.lib.jgit>6.7.0.202309050840-r</version.lib.jgit>
        <version.lib.jsch>0.1.55</version.lib.jsch>
        <version.lib.netty.tcnative>2.0.54.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.0.8</version.lib.rxjava>
        <!-- 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-M3</version.lib.surefire.testng>
        <version.lib.testng>6.13.1</version.lib.testng>
        <version.lib.zipkin.junit>2.12.5</version.lib.zipkin.junit>
        <version.lib.bedrock>5.0.11</version.lib.bedrock>
        <version.lib.okhttp3>3.14.1</version.lib.okhttp3>
        <version.lib.awaitility>3.1.6</version.lib.awaitility>
        <version.lib.weld-junit>2.0.0.Final</version.lib.weld-junit>
        <!--
        !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.0</version.plugin.checkstyle>
        <version.plugin.compiler>3.8.1</version.plugin.compiler>
        <version.plugin.dependency>3.0.0</version.plugin.dependency>
        <version.plugin.directory>0.1</version.plugin.directory>
        <version.plugin.eclipselink>2.7.5.1</version.plugin.eclipselink>
        <version.plugin.enforcer>1.4.1</version.plugin.enforcer>
        <version.plugin.enforcer>3.0.0-M1</version.plugin.enforcer>
        <version.plugin.exec>1.6.0</version.plugin.exec>
        <version.plugin.failsafe>2.19.1</version.plugin.failsafe>
        <version.plugin.glassfish-copyright>2.3</version.plugin.glassfish-copyright>
        <version.plugin.helidon-build-tools>1.2.0</version.plugin.helidon-build-tools>
        <version.plugin.hibernate-enhance>${version.lib.hibernate}</version.plugin.hibernate-enhance>
        <version.plugin.jacoco>0.7.9</version.plugin.jacoco>
        <version.plugin.jandex>1.0.6</version.plugin.jandex>
        <version.plugin.jar>3.0.2</version.plugin.jar>
        <version.plugin.javadoc>3.1.1</version.plugin.javadoc>
        <version.plugin.jaxb>0.14.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.5.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.site>3.7.1</version.plugin.site>
        <version.plugin.source>3.0.1</version.plugin.source>
        <version.plugin.spotbugs>3.1.12</version.plugin.spotbugs>
        <version.plugin.surefire.provider.junit>1.0.3</version.plugin.surefire.provider.junit>
        <version.plugin.surefire>2.19.1</version.plugin.surefire>
        <version.plugin.dependency-check>8.4.3</version.plugin.dependency-check>
        <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.7.0</version.plugin.wiremock>

        <javadoc.link.jackson-annotations>https://fasterxml.github.io/jackson-annotations/javadoc/2.9/</javadoc.link.jackson-annotations>
        <javadoc.link.jackson-core>https://fasterxml.github.io/jackson-core/javadoc/2.9/</javadoc.link.jackson-core>
        <javadoc.link.jackson-databind>https://fasterxml.github.io/jackson-databind/javadoc/2.9/</javadoc.link.jackson-databind>
        <javadoc.link.jaxrs>https://jax-rs.github.io/apidocs/${version.lib.jaxrs-api}</javadoc.link.jaxrs>
        <javadoc.link.netty>https://static.javadoc.io/io.netty/netty-transport/${version.lib.netty}</javadoc.link.netty>
        <javadoc.link.cdi>http://docs.jboss.org/cdi/api/${version.lib.cdi-api}</javadoc.link.cdi>
        <javadoc.link.javax-inject>http://javax-inject.github.io/javax-inject/api/</javadoc.link.javax-inject>
        <javadoc.link.reactive-streams>http://www.reactive-streams.org/reactive-streams-${version.lib.reactivestreams}-javadoc</javadoc.link.reactive-streams>
        <javadoc.link.jersey>https://jersey.github.io/apidocs/2.28/jersey</javadoc.link.jersey>
        <javadoc.link.typesafe-config>https://static.javadoc.io/com.typesafe/config/${version.lib.typesafe-config}</javadoc.link.typesafe-config>
        <javadoc.link.netty-transport>https://static.javadoc.io/io.netty/netty-transport/${version.lib.netty}</javadoc.link.netty-transport>
        <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/${version.lib.zipkin}</javadoc.link.zipkin>
        <javadoc.link.jakarta-jsonb>https://static.javadoc.io/jakarta.json.bind/jakarta.json.bind-api/${version.lib.jsonb-api}</javadoc.link.jakarta-jsonb>
        <javadoc.link.jakarta-persistence>https://static.javadoc.io/jakarta.persistence/jakarta.persistence-api/${version.lib.jakarta-persistence-api}</javadoc.link.jakarta-persistence>
        <javadoc.link.jakarta-jsonp>https://static.javadoc.io/jakarta.json/jakarta.json-api/1.1.6</javadoc.link.jakarta-jsonp>
        <javadoc.link.javax-jsonb>https://static.javadoc.io/javax.json.bind/javax.json.bind-api/1.0</javadoc.link.javax-jsonb>
        <javadoc.link.javax-jaxb>https://static.javadoc.io/javax.xml.bind/jaxb-api/${version.lib.jaxb-api}</javadoc.link.javax-jaxb>
        <javadoc.link.javax-persistence>https://static.javadoc.io/javax.persistence/javax.persistence-api/${version.lib.persistence-api}</javadoc.link.javax-persistence>
        <javadoc.link.javax-transaction>https://static.javadoc.io/javax.transaction/javax.transaction-api/${version.lib.transaction-api}</javadoc.link.javax-transaction>
        <javadoc.link.microprofile-config>https://static.javadoc.io/org.eclipse.microprofile.config/microprofile-config-api/${version.lib.microprofile-config-api}</javadoc.link.microprofile-config>
        <javadoc.link.microprofile-health>https://static.javadoc.io/org.eclipse.microprofile.health/microprofile-health-api/${version.lib.microprofile-health}</javadoc.link.microprofile-health>
        <javadoc.link.microprofile-metrics>https://static.javadoc.io/org.eclipse.microprofile.metrics/microprofile-metrics-api/${version.lib.microprofile-metrics2-api}</javadoc.link.microprofile-metrics>
        <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/2.7/</javadoc.link.eclipselink>

        <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>common</module>
        <module>config</module>
        <module>media</module>
        <module>webserver</module>
        <module>security</module>
        <module>microprofile</module>
        <module>tracing</module>
        <module>bundles</module>
        <module>metrics</module>
        <module>metrics2</module>
        <module>health</module>
        <module>grpc</module>
        <module>openapi</module>
        <module>jersey</module>
        <module>webclient</module>
        <module>integrations</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>1.8</source>
                        <target>1.8</target>
                        <compilerArgs>
                            <arg>-Xlint:unchecked</arg>
                        </compilerArgs>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${version.plugin.javadoc}</version>
                    <configuration>
                        <source>8</source>
                        <!-- we are not interested in each file that is generated -->
                        <quiet>true</quiet>
                        <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.jaxrs}</url>
                                <location>${javadoc.packagelist.dir}/jaxrs</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.netty}</url>
                                <location>${javadoc.packagelist.dir}/netty</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.cdi}</url>
                                <location>${javadoc.packagelist.dir}/cdi</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.javax-inject}</url>
                                <location>${javadoc.packagelist.dir}/javax-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.javax-jsonb}</url>
                                <location>${javadoc.packagelist.dir}/javax-jsonb</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.javax-jaxb}</url>
                                <location>${javadoc.packagelist.dir}/javax-jaxb</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.javax-persistence}</url>
                                <location>${javadoc.packagelist.dir}/javax-persistence</location>
                            </offlineLink>
                            <offlineLink>
                                <url>${javadoc.link.javax-transaction}</url>
                                <location>${javadoc.packagelist.dir}/javax-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.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">
                            <JOption>-J-Dhttp.agent=maven-javadoc-plugin</JOption>
                        </additionalJOptions>
                        <additionalOptions>
                            <option>--add-stylesheet ${top.parent.basedir}/etc/helidon-javadoc.css</option>
                        </additionalOptions>
                        <sourceFileExcludes>
                            <sourceFileExclude>**/module-info.java</sourceFileExclude>
                            <sourceFileExclude>target/**/*.java</sourceFileExclude>
                        </sourceFileExcludes>
                    </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-site-plugin</artifactId>
                    <version>${version.plugin.site}</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>
                        <trimStackTrace>false</trimStackTrace>
                        <!-- DO NOT override argLine instead use surefire.argLine -->
                        <argLine>${surefire.argLine} ${surefire.coverage.argline}</argLine>
                        <redirectTestOutputToFile>true</redirectTestOutputToFile>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.junit.platform</groupId>
                            <artifactId>junit-platform-surefire-provider</artifactId>
                            <version>${version.plugin.surefire.provider.junit}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.junit.jupiter</groupId>
                            <artifactId>junit-jupiter-engine</artifactId>
                            <version>${version.lib.junit}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>${version.plugin.failsafe}</version>
                    <configuration>
                        <!-- DO NOT override argLine instead use failsafe.argLine -->
                        <argLine>${failsafe.argLine} ${failsafe.coverage.argline}</argLine>
                        <redirectTestOutputToFile>true</redirectTestOutputToFile>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.junit.platform</groupId>
                            <artifactId>junit-platform-surefire-provider</artifactId>
                            <version>${version.plugin.surefire.provider.junit}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.junit.jupiter</groupId>
                            <artifactId>junit-jupiter-engine</artifactId>
                            <version>${version.lib.junit}</version>
                        </dependency>
                    </dependencies>
                </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>
                        <templateFile>${copyright.template}</templateFile>
                        <excludeFile>${copyright.exclude}</excludeFile>
                        <scm>git</scm>
                        <debug>false</debug>
                        <scmOnly>true</scmOnly>
                        <warn>true</warn>
                        <ignoreYear>false</ignoreYear>
                        <useComma>true</useComma>
                        <doHidden>true</doHidden>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>${version.plugin.checkstyle}</version>
                    <configuration>
                        <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>
                        <skip>${spotbugs.skip}</skip>
                        <threshold>${spotbugs.threshold}</threshold>
                        <excludeFilterFile>${spotbugs.exclude}</excludeFilterFile>
                        <xmlOutput>true</xmlOutput>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>io.helidon.build-tools</groupId>
                    <artifactId>sitegen-maven-plugin</artifactId>
                    <version>${version.plugin.helidon-build-tools}</version>
                    <configuration>
                        <siteConfigFile>src/main/docs/sitegen.yaml</siteConfigFile>
                        <siteSourceDirectory>src/main/docs</siteSourceDirectory>
                        <siteOutputDirectory>${site.output.dir}</siteOutputDirectory>
                        <siteArchiveExcludes>
                            <siteArchiveExclude>.asciidoctor/**</siteArchiveExclude>
                        </siteArchiveExcludes>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.asciidoctor</groupId>
                            <artifactId>asciidoctorj-diagram</artifactId>
                            <version>${version.lib.asciidoctor.diagram}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>io.helidon.build-tools</groupId>
                    <artifactId>snakeyaml-codegen-maven-plugin</artifactId>
                    <version>${version.plugin.helidon-build-tools}</version>
                </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:3.5.1-1: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>com.ethlo.persistence.tools</groupId>
                    <artifactId>eclipselink-maven-plugin</artifactId>
                    <version>${version.plugin.eclipselink}</version>
                </plugin>
                <plugin>
                  <groupId>org.hibernate.orm.tooling</groupId>
                  <artifactId>hibernate-enhance-maven-plugin</artifactId>
                  <version>${version.plugin.hibernate-enhance}</version>
                </plugin>
                <plugin>
                    <groupId>org.jvnet.jaxb2.maven2</groupId>
                    <artifactId>maven-jaxb2-plugin</artifactId>
                    <version>${version.plugin.jaxb}</version>
                </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.deliverymind</groupId>
                    <artifactId>wiremock-maven-plugin</artifactId>
                    <version>${version.plugin.wiremock}</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <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>
                </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>
                                    <directory>${top.parent.basedir}/etc/licensing</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>io.helidon.build-tools</groupId>
                <artifactId>sitegen-maven-plugin</artifactId>
                <extensions>true</extensions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <dependencyManagement>
        <dependencies>
            <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.eclipse.jgit</groupId>
                <artifactId>org.eclipse.jgit</artifactId>
                <version>${version.lib.jgit}</version>
            </dependency>
            <!-- Used to update version used by jgit -->
            <dependency>
                <groupId>com.jcraft</groupId>
                <artifactId>jsch</artifactId>
                <version>${version.lib.jsch}</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</artifactId>
                <version>${version.lib.reactivestreams}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.weld</groupId>
                <artifactId>weld-junit5</artifactId>
                <version>${version.lib.weld-junit}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <!-- if needed (as excluded from weld) -->
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-all</artifactId>
                <version>${version.lib.groovy-all}</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.testng</groupId>
                <artifactId>testng</artifactId>
                <version>${version.lib.testng}</version>
            </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</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.container</groupId>
                <artifactId>arquillian-container-spi</artifactId>
                <version>${version.lib.arquillian}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.arquillian.container</groupId>
                <artifactId>arquillian-weld-embedded</artifactId>
                <version>${version.lib.arquillian-weld-embedded}</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>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
                <version>${version.lib.okhttp3}</version>
            </dependency>
            <dependency>
                <groupId>org.awaitility</groupId>
                <artifactId>awaitility</artifactId>
                <version>${version.lib.awaitility}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <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>jdk9-javadoc</id>
          <!-- https://maven.apache.org/guides/introduction/introduction-to-profiles.html#Details_on_profile_activation -->
          <!-- AND semantics; see https://issues.apache.org/jira/browse/MNG-4565 -->
            <activation>
              <jdk>[9,10)</jdk>
              <property>
                  <name>!jdkToolchainVersion</name>
              </property>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-javadoc-plugin</artifactId>
                            <configuration>
                                <additionalJOptions>
                                    <!-- https://bugs.openjdk.java.net/browse/JDK-8184969 -->
                                    <JOption>-Xold</JOption>
                                </additionalJOptions>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
        <profile>
          <id>jdk9-toolchain-javadoc</id>
            <activation>
              <property>
                <name>jdkToolchainVersion</name>
                <value>9</value>
              </property>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-javadoc-plugin</artifactId>
                            <configuration>
                                <additionalJOptions combine.children="append">
                                    <!-- https://bugs.openjdk.java.net/browse/JDK-8184969 -->
                                    <JOption>-Xold</JOption>
                                </additionalJOptions>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
        <profile>
            <id>jdk9+</id>
            <activation>
                <jdk>[9,)</jdk>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-compiler-plugin</artifactId>
                            <executions>
                                <!-- first pass, compile everything for java9 -->
                                <execution>
                                    <id>default-compile</id>
                                    <configuration>
                                        <source>9</source>
                                        <target>9</target>
                                        <release>9</release>
                                        <compileSourceRoots>
                                            <compileSourceRoot>${project.basedir}/src/main/java</compileSourceRoot>
                                            <compileSourceRoot>${project.basedir}/src/main/java9</compileSourceRoot>
                                            <compileSourceRoot>${project.basedir}/target/generated-sources</compileSourceRoot>
                                        </compileSourceRoots>
                                    </configuration>
                                </execution>
                                <!-- 2nd pass, re-compile for java8 -->
                                <execution>
                                    <id>base-compile</id>
                                    <goals>
                                        <goal>compile</goal>
                                    </goals>
                                    <configuration>
                                        <release>8</release>
                                    </configuration>
                                </execution>
                                <execution>
                                    <id>default-testCompile</id>
                                    <goals>
                                        <goal>testCompile</goal>
                                    </goals>
                                    <configuration>
                                        <release>8</release>
                                    </configuration>
                                </execution>
                            </executions>
                        </plugin>
                        <plugin>
                          <groupId>org.apache.maven.plugins</groupId>
                          <artifactId>maven-javadoc-plugin</artifactId>
                          <configuration>
                              <additionalJOptions combine.children="append">
                                  <additionalJOption>--frames</additionalJOption>
                              </additionalJOptions>
                          </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </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>docs</id>
            <modules>
                <module>javadocs</module>
                <module>docs</module>
            </modules>
        </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>
                                    <configLocation>${top.parent.basedir}/etc/checkstyle.xml</configLocation>
                                    <suppressionsLocation>${top.parent.basedir}/etc/checkstyle-suppressions.xml</suppressionsLocation>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>copyright</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.glassfish.copyright</groupId>
                        <artifactId>glassfish-copyright-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>print-copyright</id>
                                <goals>
                                    <goal>copyright</goal>
                                </goals>
                                <phase>validate</phase>
                                <configuration>
                                    <templateFile>${top.parent.basedir}/etc/copyright.txt</templateFile>
                                    <excludeFile>${top.parent.basedir}/etc/copyright-exclude.txt</excludeFile>
                                </configuration>
                            </execution>
                            <execution>
                                <id>check-copyright</id>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <phase>validate</phase>
                                <configuration>
                                    <templateFile>${top.parent.basedir}/etc/copyright.txt</templateFile>
                                    <excludeFile>${top.parent.basedir}/etc/copyright-exclude.txt</excludeFile>
                                </configuration>
                            </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 -->
                <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 -->
                <surefire.coverage.argline>${jacoco.agent.ut.arg}</surefire.coverage.argline>
                <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>
            <modules>
                <module>javadocs</module>
                <module>docs</module>
            </modules>
            <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>
    </profiles>
</project>
