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

    Copyright (c) 2016, 2019 Oracle and/or its affiliates. All rights reserved.

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

-->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>io.helidon</groupId>
    <artifactId>helidon-project</artifactId>
    <version>1.0.2-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>Helidon Project</name>

    <description>Java libraries for writing microservices</description>

    <url>https://helidon.io</url>

    <organization>
        <name>Oracle Corporation</name>
        <url>http://www.oracle.com/</url>
    </organization>

    <inceptionYear>2018</inceptionYear>

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

    <developers>
        <developer>
            <name>Tomas Langer</name>
            <email>tomas.langer@oracle.com</email>
            <organization>Oracle Corporation</organization>
        </developer>
        <developer>
            <name>Tim Quinn</name>
            <email>tim.quinn@oracle.com</email>
            <organization>Oracle Corporation</organization>
        </developer>
        <developer>
            <name>Romain Grecourt</name>
            <email>romain.grecourt@oracle.com</email>
            <organization>Oracle Corporation</organization>
        </developer>
        <developer>
            <name>Laird Jarrett Nelson</name>
            <email>laird.nelson@oracle.com</email>
            <organization>Oracle Corporation</organization>
        </developer>
        <developer>
            <name>Santiago Pericas-Geertsen</name>
            <email>santiago.pericasgeertsen@oracle.com</email>
            <organization>Oracle Corporation</organization>
        </developer>
    </developers>

    <scm>
        <developerConnection>scm:git:git@github.com:oracle/helidon.git</developerConnection>
        <connection>scm:git:git@github.com:oracle/helidon.git</connection>
        <tag>HEAD</tag>
        <url>https://github.com/oracle/helidon</url>
    </scm>

    <properties>
        <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>

        <!--
        !Version statement! - begin

        Changing these version requires approval for a new third party dependency!
        -->
        <version.lib.activation-api>1.2.0</version.lib.activation-api>
        <version.lib.annotation-api>1.3.1</version.lib.annotation-api>
        <version.lib.apache-httpclient>4.5.5</version.lib.apache-httpclient>
        <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.brave-opentracing>0.31.0</version.lib.brave-opentracing>
        <version.lib.cdi-api>2.0</version.lib.cdi-api>
        <version.lib.checkstyle>8.18</version.lib.checkstyle>
        <version.lib.el-api>3.0.0</version.lib.el-api>
        <version.lib.el-impl>3.0.0</version.lib.el-impl>
        <version.lib.etcd4j>2.16.0</version.lib.etcd4j>
        <version.lib.google-api-client>1.23.0</version.lib.google-api-client>
        <version.lib.graalvm>1.0.0-rc13</version.lib.graalvm>
        <version.lib.groovy-all>2.4.14</version.lib.groovy-all>
        <version.lib.grpc>1.16.1</version.lib.grpc>
        <version.lib.guava>25.0-jre</version.lib.guava>
        <version.lib.h2>1.4.197</version.lib.h2>
        <version.lib.hamcrest>1.3</version.lib.hamcrest>
        <version.lib.hikaricp>2.7.8</version.lib.hikaricp>
        <version.lib.jackson>2.9.4</version.lib.jackson>
        <version.lib.jandex>2.0.4.Final</version.lib.jandex>
        <version.lib.jaxb-api>2.3.0</version.lib.jaxb-api>
        <version.lib.jaxrs-api>2.1</version.lib.jaxrs-api>
        <version.lib.jedis>2.9.0</version.lib.jedis>
        <version.lib.jersey>2.26</version.lib.jersey>
        <version.lib.jgit>4.9.0.201710071750-r</version.lib.jgit>
        <version.lib.jmh>1.19</version.lib.jmh>
        <version.lib.jsonb-api>1.0</version.lib.jsonb-api>
        <version.lib.jsonp-api>1.1.2</version.lib.jsonp-api>
        <version.lib.jsonp-impl>1.1.2</version.lib.jsonp-impl>
        <version.lib.jsr305>3.0.2</version.lib.jsr305>
        <version.lib.junit>5.1.0</version.lib.junit>
        <version.lib.microprofile-config-api>1.2.1</version.lib.microprofile-config-api>
        <version.lib.microprofile-config-tck>1.2.1</version.lib.microprofile-config-tck>
        <version.lib.microprofile-health-api>1.0</version.lib.microprofile-health-api>
        <version.lib.microprofile-jwt>1.1.1</version.lib.microprofile-jwt>
        <version.lib.microprofile-metrics-api>1.1</version.lib.microprofile-metrics-api>
        <version.lib.microprofile-fault-tolerance-api>1.1.3</version.lib.microprofile-fault-tolerance-api>
        <version.lib.mockito>2.23.4</version.lib.mockito>
        <version.lib.mysql-connector-java>8.0.11</version.lib.mysql-connector-java>
        <version.lib.netty>4.1.30.Final</version.lib.netty>
        <version.lib.oci-java-sdk-objectstorage>1.2.44</version.lib.oci-java-sdk-objectstorage>
        <version.lib.ojdbc8>12.2.0.1</version.lib.ojdbc8>
        <version.lib.opentracing>0.31.0</version.lib.opentracing>
        <version.lib.prometheus>0.4.0</version.lib.prometheus>
        <version.lib.protobuf.java>3.5.1</version.lib.protobuf.java>
        <version.lib.reactivestreams>1.0.2</version.lib.reactivestreams>
        <version.lib.reactor>3.1.5.RELEASE</version.lib.reactor>
        <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>
        <version.lib.slf4j>1.7.25</version.lib.slf4j>
        <version.lib.snakeyaml>1.19</version.lib.snakeyaml>
        <version.lib.spotbugs-annotations>3.1.3</version.lib.spotbugs-annotations>
        <version.lib.testng>6.13.1</version.lib.testng>
        <version.lib.typesafe-config>1.3.3</version.lib.typesafe-config>
        <version.lib.weld>3.0.3.Final</version.lib.weld>
        <version.lib.zipkin>2.6.0</version.lib.zipkin>
        <version.lib.hystrix>1.5.18</version.lib.hystrix>
        <version.lib.failsafe>1.1.0</version.lib.failsafe>
        <version.lib.yasson>1.0.3</version.lib.yasson>
        <!--
        !Version statement! - end
        -->

        <!-- maven plugin versions -->
        <version.plugin.build-helper>1.12</version.plugin.build-helper>
        <version.plugin.checkstyle>2.17</version.plugin.checkstyle>
        <version.plugin.compiler>3.7.0</version.plugin.compiler>
        <version.plugin.dependency>3.0.0</version.plugin.dependency>
        <version.plugin.deploy>2.8.2</version.plugin.deploy>
        <version.plugin.directory>0.1</version.plugin.directory>
        <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>1.48</version.plugin.glassfish-copyright>
        <version.plugin.gpg>1.6</version.plugin.gpg>
        <version.plugin.jacoco>0.7.9</version.plugin.jacoco>
        <version.plugin.jandex>1.0.5</version.plugin.jandex>
        <version.plugin.jar>3.0.2</version.plugin.jar>
        <version.plugin.javadoc>3.0.0</version.plugin.javadoc>
        <version.plugin.license>1.16</version.plugin.license>
        <version.plugin.nexus-staging>1.6.7</version.plugin.nexus-staging>
        <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.0</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.site>3.7.1</version.plugin.site>
        <version.plugin.sitegen>1.0.9</version.plugin.sitegen>
        <version.plugin.source>3.0.1</version.plugin.source>
        <version.plugin.spotbugs>3.1.3.1</version.plugin.spotbugs>
        <version.plugin.spotify-docker>1.0.0</version.plugin.spotify-docker>
        <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>

        <site.output.dir>${project.build.directory}/docs</site.output.dir>
    </properties>

    <modules>
        <module>common</module>
        <module>config</module>
        <module>media</module>
        <module>webserver</module>
        <module>security</module>
        <module>bom</module>
        <module>microprofile</module>
        <module>tracing</module>
        <module>bundles</module>
        <module>metrics</module>
        <module>health</module>
    </modules>

    <build>
        <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>
                        <links>
                            <link>http://docs.jboss.org/cdi/api/${version.lib.cdi-api}</link>
                            <link>https://fasterxml.github.io/jackson-annotations/javadoc/2.9/</link>
                            <link>https://fasterxml.github.io/jackson-core/javadoc/2.9/</link>
                            <link>https://fasterxml.github.io/jackson-databind/javadoc/2.9/</link>
                            <link>http://www.reactive-streams.org/reactive-streams-${version.lib.reactivestreams}-javadoc</link>
                            <link>https://jax-rs.github.io/apidocs/${version.lib.jaxrs-api}</link>
                            <link>https://jersey.github.io/apidocs/${version.lib.jersey}/jersey</link>
                            <link>https://static.javadoc.io/com.typesafe/config/${version.lib.typesafe-config}</link>
                            <link>https://static.javadoc.io/io.netty/netty-transport/${version.lib.netty}</link>
                            <link>https://static.javadoc.io/io.opentracing/opentracing-api/${version.lib.opentracing}</link>
                            <link>https://static.javadoc.io/io.prometheus/simpleclient/${version.lib.prometheus}</link>
                            <link>https://static.javadoc.io/io.zipkin.reporter2/zipkin-reporter/${version.lib.zipkin}</link>
                            <link>https://static.javadoc.io/javax.json/javax.json-api/${version.lib.jsonp-api}</link>
                            <link>https://static.javadoc.io/javax.json.bind/javax.json.bind-api/${version.lib.jsonb-api}</link>
                            <link>https://static.javadoc.io/org.eclipse.microprofile.config/microprofile-config-api/${version.lib.microprofile-config-api}</link>
                            <link>https://static.javadoc.io/org.eclipse.microprofile.health/microprofile-health-api/${version.lib.microprofile-health-api}</link>
                            <link>https://static.javadoc.io/org.eclipse.microprofile.metrics/microprofile-metrics-api/${version.lib.microprofile-metrics-api}</link>
                        </links>
                        <doclint>all</doclint>
                        <additionalJOptions combine.children="append">
                            <JOption>-J-Dhttp.agent=maven-javadoc-plugin</JOption>
                        </additionalJOptions>
                        <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-deploy-plugin</artifactId>
                    <version>${version.plugin.deploy}</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>com.spotify</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>${version.plugin.spotify-docker}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${version.plugin.surefire}</version>
                    <configuration>
                        <!-- DO NOT override argLine instead use surefire.argLine -->
                        <argLine>${surefire.argLine} ${surefire.coverage.argline}</argLine>
                    </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>
                    </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>
                </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>
                        <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
                    </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.sitegen}</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>org.xolstice.maven.plugins</groupId>
                    <artifactId>protobuf-maven-plugin</artifactId>
                    <version>${version.plugin.protobuf}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>${version.plugin.build-helper}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>license-maven-plugin</artifactId>
                    <version>${version.plugin.license}</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.doxia</groupId>
                            <artifactId>doxia-core</artifactId>
                            <version>1.6</version>
                        </dependency>
                        <dependency>
                            <groupId>org.apache.maven.doxia</groupId>
                            <artifactId>doxia-site-renderer</artifactId>
                            <version>1.6</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <version>${version.plugin.gpg}</version>
                </plugin>
                <plugin>
                    <groupId>org.sonatype.plugins</groupId>
                    <artifactId>nexus-staging-maven-plugin</artifactId>
                    <version>${version.plugin.nexus-staging}</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}</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.sonatype.plugins</groupId>
                <artifactId>nexus-staging-maven-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <serverId>ossrh</serverId>
                    <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                    <autoReleaseAfterClose>true</autoReleaseAfterClose>
                    <skipStagingRepositoryClose>true</skipStagingRepositoryClose>
                    <skipNexusStagingDeployMojo>${maven.deploy.skip}</skipNexusStagingDeployMojo>
                </configuration>
            </plugin>
            <plugin>
                <groupId>io.helidon.build-tools</groupId>
                <artifactId>sitegen-maven-plugin</artifactId>
                <extensions>true</extensions>
            </plugin>
        </plugins>
    </build>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.glassfish.jersey</groupId>
                <artifactId>jersey-bom</artifactId>
                <version>${version.lib.jersey}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson</groupId>
                <artifactId>jackson-bom</artifactId>
                <version>${version.lib.jackson}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <!-- Explicitly force jackson-annotations to use proper version; bom doesn't -->
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${version.lib.jackson}</version>
            </dependency>
            <dependency>
                <groupId>io.projectreactor</groupId>
                <artifactId>reactor-core</artifactId>
                <version>${version.lib.reactor}</version>
            </dependency>
            <dependency>
                <groupId>io.opentracing</groupId>
                <artifactId>opentracing-util</artifactId>
                <version>${version.lib.opentracing}</version>
            </dependency>
            <dependency>
                <groupId>io.opentracing</groupId>
                <artifactId>opentracing-api</artifactId>
                <version>${version.lib.opentracing}</version>
            </dependency>
            <dependency>
                <groupId>io.opentracing</groupId>
                <artifactId>opentracing-noop</artifactId>
                <version>${version.lib.opentracing}</version>
            </dependency>
            <dependency>
                <groupId>io.opentracing</groupId>
                <artifactId>opentracing-mock</artifactId>
                <version>${version.lib.opentracing}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>${version.lib.jaxb-api}</version>
            </dependency>
            <dependency>
                <groupId>javax.ws.rs</groupId>
                <artifactId>javax.ws.rs-api</artifactId>
                <version>${version.lib.jaxrs-api}</version>
            </dependency>
            <dependency>
                <groupId>javax.enterprise</groupId>
                <artifactId>cdi-api</artifactId>
                <version>${version.lib.cdi-api}</version>
            </dependency>
            <dependency>
                <groupId>javax.el</groupId>
                <artifactId>javax.el-api</artifactId>
                <version>${version.lib.el-api}</version>
            </dependency>
            <dependency>
                <groupId>javax.annotation</groupId>
                <artifactId>javax.annotation-api</artifactId>
                <version>${version.lib.annotation-api}</version>
            </dependency>
            <dependency>
                <groupId>javax.json</groupId>
                <artifactId>javax.json-api</artifactId>
                <version>${version.lib.jsonp-api}</version>
            </dependency>
            <dependency>
              <groupId>javax.json.bind</groupId>
              <artifactId>javax.json.bind-api</artifactId>
              <version>${version.lib.jsonb-api}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish</groupId>
                <artifactId>javax.json</artifactId>
                <version>${version.lib.jsonp-impl}</version>
            </dependency>
            <dependency>
                <!-- contains the API as well -->
                <groupId>org.glassfish</groupId>
                <artifactId>javax.el</artifactId>
                <version>${version.lib.el-impl}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-handler</artifactId>
                <version>${version.lib.netty}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-codec-dns</artifactId>
                <version>${version.lib.netty}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-resolver-dns</artifactId>
                <version>${version.lib.netty}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-codec-http</artifactId>
                <version>${version.lib.netty}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-codec-http2</artifactId>
                <version>${version.lib.netty}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse</groupId>
                <artifactId>yasson</artifactId>
                <version>${version.lib.yasson}</version>
            </dependency>

            <!-- Config related -->
            <dependency>
                <groupId>com.typesafe</groupId>
                <artifactId>config</artifactId>
                <version>${version.lib.typesafe-config}</version>
            </dependency>
            <dependency>
                <groupId>org.yaml</groupId>
                <artifactId>snakeyaml</artifactId>
                <version>${version.lib.snakeyaml}</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>org.mousio</groupId>
                <artifactId>etcd4j</artifactId>
                <version>${version.lib.etcd4j}</version>
            </dependency>
            <dependency>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-core</artifactId>
                <version>${version.lib.grpc}</version>
            </dependency>
            <dependency>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-protobuf</artifactId>
                <version>${version.lib.grpc}</version>
            </dependency>
            <dependency>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-stub</artifactId>
                <version>${version.lib.grpc}</version>
            </dependency>
            <dependency>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-netty</artifactId>
                <version>${version.lib.grpc}</version>
            </dependency>
            <dependency>
                <groupId>com.google.protobuf</groupId>
                <artifactId>protobuf-java</artifactId>
                <version>${version.lib.protobuf.java}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jgit</groupId>
                <artifactId>org.eclipse.jgit</artifactId>
                <version>${version.lib.jgit}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jgit</groupId>
                <artifactId>org.eclipse.jgit.junit</artifactId>
                <version>${version.lib.jgit}</version>
            </dependency>

            <!-- Webserver related -->
            <dependency>
                <groupId>io.zipkin.reporter2</groupId>
                <artifactId>zipkin-sender-urlconnection</artifactId>
                <version>${version.lib.zipkin}</version>
            </dependency>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${version.lib.guava}</version>
            </dependency>
            <dependency>
                <groupId>io.prometheus</groupId>
                <artifactId>simpleclient</artifactId>
                <version>${version.lib.prometheus}</version>
            </dependency>
            <dependency>
                <groupId>com.github.spotbugs</groupId>
                <artifactId>spotbugs-annotations</artifactId>
                <version>${version.lib.spotbugs-annotations}</version>
            </dependency>
            <dependency>
                <groupId>io.opentracing.brave</groupId>
                <artifactId>brave-opentracing</artifactId>
                <version>${version.lib.brave-opentracing}</version>
            </dependency>
            <dependency>
                <groupId>org.reactivestreams</groupId>
                <artifactId>reactive-streams</artifactId>
                <version>${version.lib.reactivestreams}</version>
            </dependency>
            <dependency>
                <groupId>org.reactivestreams</groupId>
                <artifactId>reactive-streams-tck</artifactId>
                <version>${version.lib.reactivestreams}</version>
            </dependency>

            <!-- Security related -->
            <dependency>
                <!-- Use this version instead of the one in google-api-client -->
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>${version.lib.apache-httpclient}</version>
            </dependency>
            <dependency>
                <!-- Google APIs -->
                <groupId>com.google.api-client</groupId>
                <artifactId>google-api-client</artifactId>
                <version>${version.lib.google-api-client}</version>
                <exclusions>
                    <exclusion>
                        <!-- must use current version -->
                        <groupId>org.apache.httpcomponents</groupId>
                        <artifactId>httpclient</artifactId>
                    </exclusion>
                    <exclusion>
                        <!-- must use guava artifactId -->
                        <groupId>com.google.guava</groupId>
                        <artifactId>guava-jdk5</artifactId>
                    </exclusion>
                    <exclusion>
                        <!-- must use current version -->
                        <groupId>com.fasterxml.jackson.core</groupId>
                        <artifactId>jackson-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <!-- must use current version -->
                        <groupId>com.google.code.findbugs</groupId>
                        <artifactId>jsr305</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.google.code.findbugs</groupId>
                <artifactId>jsr305</artifactId>
                <version>${version.lib.jsr305}</version>
            </dependency>

            <!-- Microprofile related -->
            <dependency>
                <groupId>org.jboss.weld.se</groupId>
                <artifactId>weld-se-core</artifactId>
                <version>${version.lib.weld}</version>
                <exclusions>
                    <exclusion>
                        <!-- must use current version -->
                        <groupId>org.codehaus.groovy</groupId>
                        <artifactId>groovy-all</artifactId>
                    </exclusion>
                </exclusions>
            </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.config</groupId>
                <artifactId>microprofile-config-api</artifactId>
                <version>${version.lib.microprofile-config-api}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.health</groupId>
                <artifactId>microprofile-health-api</artifactId>
                <version>${version.lib.microprofile-health-api}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.jwt</groupId>
                <artifactId>microprofile-jwt-auth-api</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>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.jwt</groupId>
                <artifactId>microprofile-jwt-auth-tck</artifactId>
                <version>${version.lib.microprofile-jwt}</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.metrics</groupId>
                <artifactId>microprofile-metrics-api</artifactId>
                <version>${version.lib.microprofile-metrics-api}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.fault-tolerance</groupId>
                <artifactId>microprofile-fault-tolerance-api</artifactId>
                <version>${version.lib.microprofile-fault-tolerance-api}</version>
            </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>com.netflix.hystrix</groupId>
                <artifactId>hystrix-core</artifactId>
                <version>${version.lib.hystrix}</version>
            </dependency>
            <dependency>
                <groupId>net.jodah</groupId>
                <artifactId>failsafe</artifactId>
                <version>${version.lib.failsafe}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss</groupId>
                <artifactId>jandex</artifactId>
                <version>${version.lib.jandex}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${version.lib.slf4j}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-jdk14</artifactId>
                <version>${version.lib.slf4j}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>${version.lib.slf4j}</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.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>
            <dependency>
                <groupId>org.eclipse.microprofile.config</groupId>
                <artifactId>microprofile-config-tck</artifactId>
                <version>${version.lib.microprofile-config-tck}</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>

            <!-- Integrations related -->
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>${version.lib.h2}</version>
            </dependency>
            <!--
                See http://docs.oracle.com/middleware/1213/core/MAVEN/config_maven_repo.htm#MAVEN9010
            -->
            <dependency>
                <groupId>com.oracle.jdbc</groupId>
                <artifactId>ojdbc8</artifactId>
                <version>${version.lib.ojdbc8}</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${version.lib.mysql-connector-java}</version>
            </dependency>
            <dependency>
                <groupId>com.oracle.oci.sdk</groupId>
                <artifactId>oci-java-sdk-objectstorage</artifactId>
                <version>${version.lib.oci-java-sdk-objectstorage}</version>
                <type>pom</type>
            </dependency>
            <dependency>
                <groupId>com.zaxxer</groupId>
                <artifactId>HikariCP</artifactId>
                <version>${version.lib.hikaricp}</version>
            </dependency>
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>${version.lib.jedis}</version>
            </dependency>
            <dependency>
                <groupId>org.graalvm.sdk</groupId>
                <artifactId>graal-sdk</artifactId>
                <version>${version.lib.graalvm}</version>
            </dependency>
            <dependency>
                <groupId>com.oracle.substratevm</groupId>
                <artifactId>svm</artifactId>
                <version>${version.lib.graalvm}</version>
            </dependency>

            <!-- Testing libraries -->
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>${version.lib.mockito}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
                <version>${version.lib.junit}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-params</artifactId>
                <version>${version.lib.junit}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
                <version>${version.lib.junit}</version>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-all</artifactId>
                <version>${version.lib.hamcrest}</version>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-core</artifactId>
                <version>${version.lib.hamcrest}</version>
            </dependency>
            <dependency>
                <groupId>org.openjdk.jmh</groupId>
                <artifactId>jmh-core</artifactId>
                <version>${version.lib.jmh}</version>
            </dependency>
            <dependency>
                <groupId>org.openjdk.jmh</groupId>
                <artifactId>jmh-generator-annprocess</artifactId>
                <version>${version.lib.jmh}</version>
            </dependency>
            <dependency>
                <groupId>javax.activation</groupId>
                <artifactId>javax.activation-api</artifactId>
                <version>${version.lib.activation-api}</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>integrations</id>
            <modules>
                <module>integrations</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>
                    </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>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>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>toolchain</id>
            <activation>
                <file>
                    <exists>${user.home}/.m2/toolchains.xml</exists>
                </file>
            </activation>
            <properties>
                <jdkToolchainVersion>${java.vm.specification.version}</jdkToolchainVersion>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-toolchains-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>toolchain</goal>
                                </goals>
                                <configuration>
                                    <toolchains>
                                        <jdk>
                                            <version>${jdkToolchainVersion}</version>
                                        </jdk>
                                    </toolchains>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>ossrh-releases</id>
            <repositories>
                <repository>
                    <id>ossrh-releases</id>
                    <url>https://oss.sonatype.org/content/repositories/releases/</url>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>ossrh-releases</id>
                    <url>https://oss.sonatype.org/content/repositories/releases/</url>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>

    <distributionManagement>
        <snapshotRepository>
            <id>ossrh-snapshots</id>
            <name>Internal Helidon Snapshot Repository</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
        </snapshotRepository>
        <repository>
            <id>ossrh</id>
            <name>Internal Helidon Release Repository</name>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>
</project>
