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

    Copyright (c) 2016, 2020 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>2.0.0-M4</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>

        <checkstyle.skip>false</checkstyle.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.groovy-all>2.4.14</version.lib.groovy-all>
        <version.lib.jgit>4.9.9.201903122025-r</version.lib.jgit>
        <version.lib.jsch>0.1.55</version.lib.jsch>
        <version.lib.netty.tcnative>2.0.26.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.okio>1.17.2</version.lib.okio>
        <version.lib.awaitility>3.1.6</version.lib.awaitility>
        <version.lib.weld-junit>2.0.0.Final</version.lib.weld-junit>
        <version.lib.jmh>1.23</version.lib.jmh>
        <!--
        !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.1.2</version.plugin.dependency>
        <version.plugin.directory>0.1</version.plugin.directory>
        <version.plugin.eclipselink>2.7.1.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>2.19.1</version.plugin.failsafe>
        <version.plugin.glassfish-copyright>2.3</version.plugin.glassfish-copyright>
        <version.plugin.helidon-build-tools>2.0.0-M4</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.0.6</version.plugin.jandex>
        <version.plugin.jar>3.0.2</version.plugin.jar>
        <version.plugin.javadoc>3.2.0</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.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.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.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}</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-metrics-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>health</module>
        <module>grpc</module>
        <module>openapi</module>
        <module>jersey</module>
        <module>webclient</module>
        <module>integrations</module>
        <module>dbclient</module>
        <module>messaging</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>11</source>
                        <target>11</target>
                        <release>11</release>
                        <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>11</source>
                        <release>11</release>
                        <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.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">
                            <additionalJOption>-J-Dhttp.agent=maven-javadoc-plugin</additionalJOption>
                            <!--<additionalJOption>- -frames</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>
                        <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>
                        <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>
                        <skip>${spotbugs.skip}</skip>
                        <threshold>${spotbugs.threshold}</threshold>
                        <excludeFilterFile>${spotbugs.exclude}</excludeFilterFile>
                        <xmlOutput>true</xmlOutput>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.xolstice.maven.plugins</groupId>
                    <artifactId>protobuf-maven-plugin</artifactId>
                    <version>${version.plugin.protobuf}</version>
                    <configuration>
                        <protocArtifact>com.google.protobuf:protoc:3.5.1-1:exe:${os.detected.classifier}</protocArtifact>
                        <pluginId>grpc-java</pluginId>
                        <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>
                <plugin>
                    <groupId>io.helidon.build-tools</groupId>
                    <artifactId>snakeyaml-codegen-maven-plugin</artifactId>
                    <version>${version.plugin.helidon-build-tools}</version>
                </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>
                </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}</directory>
                                    <targetPath>META-INF/</targetPath>
                                    <includes>
                                        <include>LICENSE.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>
                    <dependency>
                        <groupId>org.asciidoctor</groupId>
                        <artifactId>asciidoctorj-diagram</artifactId>
                        <version>${version.lib.asciidoctor.diagram}</version>
                    </dependency>
                </dependencies>
            </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-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>
                <exclusions>
                    <exclusion>
                        <groupId>javax.enterprise</groupId>
                        <artifactId>cdi-api</artifactId>
                    </exclusion>
                </exclusions>
            </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>
            </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.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>
            <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>
                <!-- required for dependency convergence
                used from both
                com.squareup.okhttp3:mockwebserver:3.13.1
                com.squareup.moshi:moshi:1.8.0
                both referenced by
                io.zipkin.zipkin2:zipkin-junit:2.12.5
                -->
                <groupId>com.squareup.okio</groupId>
                <artifactId>okio</artifactId>
                <version>${version.lib.okio}</version>
            </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>
        </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>
                        </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>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>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>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>
            <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>
