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

    Copyright (c) 2018, 2022 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>
    <groupId>io.helidon.build-tools</groupId>
    <artifactId>helidon-build-tools-project</artifactId>
    <version>3.0.0</version>
    <packaging>pom</packaging>
    <name>Helidon Build Tools Project</name>

    <description>Build tools for the Helidon project(s)</description>

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

    <organization>
        <name>Oracle Corporation</name>
        <url>https://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>
        <developer>
            <name>Joe Di Pol</name>
            <email>joe.dipol@oracle.com</email>
            <organization>Oracle Corporation</organization>
        </developer>
        <developer>
            <name>Dmitry Kornilov</name>
            <email>dmitry.kornilov@oracle.com</email>
            <organization>Oracle Corporation</organization>
        </developer>
        <developer>
            <name>Bryan Atsatt</name>
            <email>bryan.atsatt@oracle.com</email>
            <organization>Oracle Corporation</organization>
        </developer>
    </developers>

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

    <properties>

        <!--
        Specifies the default release for the compiler plugin.
        Also used explicitly for the javadoc plugin.
        -->
        <maven.compiler.release>11</maven.compiler.release>

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

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

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

        <!--
        !Version statement! - begin

        Changing these version requires approval for a new third party dependency!
        -->
        <version.lib.apache-commons>3.10</version.lib.apache-commons>
        <version.lib.archetype-common>3.2.0</version.lib.archetype-common>
        <version.lib.asciidoctorj>2.5.2</version.lib.asciidoctorj>
        <version.lib.asm>7.2</version.lib.asm>
        <version.lib.checkstyle>9.1</version.lib.checkstyle>
        <version.lib.diffutils>2.2</version.lib.diffutils>
        <version.lib.doxia>1.9.1</version.lib.doxia>
        <version.lib.freemarker>2.3.23</version.lib.freemarker>
        <version.lib.graalvm-sdk>20.2.0</version.lib.graalvm-sdk>
        <version.lib.groovy>2.4.16</version.lib.groovy>
        <version.lib.gson>2.8.9</version.lib.gson>
        <version.lib.hamcrest>1.3</version.lib.hamcrest>
        <version.lib.invoker>3.0.1</version.lib.invoker>
        <version.lib.jackson>2.11.0</version.lib.jackson>
        <version.lib.jandex>2.1.1.Final</version.lib.jandex>
        <version.lib.jansi>1.18</version.lib.jansi>
        <version.lib.jaxb-api>2.3.3</version.lib.jaxb-api>
        <version.lib.jaxb-core>2.3.0.1</version.lib.jaxb-core>
        <version.lib.jaxb-impl>2.3.3</version.lib.jaxb-impl>
        <version.lib.jsonp-impl>1.1.4</version.lib.jsonp-impl>
        <version.lib.junit>5.8.0-M1</version.lib.junit>
        <version.lib.junit-platform>1.8.0-M1</version.lib.junit-platform>
        <version.lib.junit4>4.13.1</version.lib.junit4>
        <version.lib.lsp4j>0.9.0</version.lib.lsp4j>
        <version.lib.lsp4mp>0.2.0</version.lib.lsp4mp>
        <version.lib.maven>3.6.2</version.lib.maven>
        <version.lib.maven-annotations>3.5</version.lib.maven-annotations>
        <version.lib.maven-archiver>3.5.0</version.lib.maven-archiver>
        <version.lib.maven-artifact-transfer>0.13.1</version.lib.maven-artifact-transfer>
        <version.lib.maven-embedder>3.6.2</version.lib.maven-embedder>
        <version.lib.maven-filtering>3.1.1</version.lib.maven-filtering>
        <version.lib.maven-plugin-testing-harness>3.3.0</version.lib.maven-plugin-testing-harness>
        <version.lib.maven-resolver>1.4.1</version.lib.maven-resolver>
        <version.lib.maven-settings>3.6.2</version.lib.maven-settings>
        <version.lib.mock-server>5.10.0</version.lib.mock-server>
        <version.lib.mustache>0.9.6</version.lib.mustache>
        <version.lib.picocli-jansi>1.1.0</version.lib.picocli-jansi>
        <version.lib.plexus-archiver>4.1.0</version.lib.plexus-archiver>
        <version.lib.plexus-build-api>0.0.7</version.lib.plexus-build-api>
        <version.lib.plexus-component>2.0.0</version.lib.plexus-component>
        <version.lib.plexus-utils>3.3.0</version.lib.plexus-utils>
        <version.lib.site-plugin>3.8.2</version.lib.site-plugin>
        <version.lib.slf4j>1.7.25</version.lib.slf4j>
        <version.lib.snakeyaml>1.30</version.lib.snakeyaml>
        <version.lib.spotbugs-annotations>3.1.12</version.lib.spotbugs-annotations>
        <version.lib.wagon-http>3.3.4</version.lib.wagon-http>

        <!--
            !Version statement! - end
        -->

        <!-- maven plugin versions -->
        <version.plugin.build-helper>3.2.0</version.plugin.build-helper>
        <version.plugin.buildnumber>1.4</version.plugin.buildnumber>
        <version.plugin.checkstyle>3.1.2</version.plugin.checkstyle>
        <version.plugin.clean>3.1.0</version.plugin.clean>
        <version.plugin.compiler>3.8.1</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>3.0.0-M1</version.plugin.enforcer>
        <version.plugin.exec>1.6.0</version.plugin.exec>
        <version.plugin.failsafe>3.0.0-M5</version.plugin.failsafe>
        <version.plugin.frontend>1.11.3</version.plugin.frontend>
        <version.plugin.glassfish-copyright>2.3</version.plugin.glassfish-copyright>
        <version.plugin.gpg>1.6</version.plugin.gpg>
        <version.plugin.jacoco>0.7.9</version.plugin.jacoco>
        <version.plugin.jar>3.0.2</version.plugin.jar>
        <version.plugin.javadoc>3.2.0</version.plugin.javadoc>
        <version.plugin.invoker>3.2.2</version.plugin.invoker>
        <version.plugin.license>1.16</version.plugin.license>
        <version.plugin.plexus>2.1.0</version.plugin.plexus>
        <version.plugin.plugin-plugin>3.6.0</version.plugin.plugin-plugin>
        <version.plugin.nexus-staging>1.6.8</version.plugin.nexus-staging>
        <version.plugin.release-plugin>2.5.3</version.plugin.release-plugin>
        <version.plugin.resources>2.7</version.plugin.resources>
        <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>3.0.0-M5</version.plugin.surefire>
        <version.plugin.failsafe>3.0.0-M5</version.plugin.failsafe>
        <version.plugin.toolchains>1.1</version.plugin.toolchains>
        <version.plugin.tycho>2.5.0</version.plugin.tycho>
        <version.plugin.shade>3.2.4</version.plugin.shade>
        <version.plugin.moditect>1.0.0.Beta2</version.plugin.moditect>
    </properties>

    <modules>
        <module>common</module>
        <module>maven-plugins</module>
        <module>cli</module>
        <module>archetype</module>
        <module>linker</module>
        <module>licensing</module>
        <module>dev-loop</module>
    </modules>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${version.plugin.compiler}</version>
                    <configuration>
                        <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>
                        <release>${maven.compiler.release}</release>
                        <failOnError>true</failOnError>
                        <quiet>true</quiet>
                        <sourceFileExcludes>
                            <sourceFileExclude>**/module-info.java</sourceFileExclude>
                            <sourceFileExclude>target/**/*.java</sourceFileExclude>
                        </sourceFileExcludes>
                    </configuration>
                </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>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${version.plugin.surefire}</version>
                    <configuration>
                        <redirectTestOutputToFile>true</redirectTestOutputToFile>
                        <!-- DO NOT override argLine instead use surefire.argLine -->
                        <argLine>${surefire.argLine} ${surefire.coverage.argLine}</argLine>
                        <trimStackTrace>false</trimStackTrace>
                        <systemPropertyVariables>
                            <use.embedded.maven.executor>false</use.embedded.maven.executor>
                            <io.helidon.build.fast.streams>false</io.helidon.build.fast.streams>
                            <jansi.force>true</jansi.force>
                        </systemPropertyVariables>
                        <excludes>
                            <exclude>**/*IT.java</exclude>
                        </excludes>
                        <useModulePath>false</useModulePath>
                    </configuration>
                    <dependencies>
                        <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>
                        <includes>
                            <include>**/*IT.java</include>
                        </includes>
                    </configuration>
                    <dependencies>
                        <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.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>${version.plugin.dependency}</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-clean-plugin</artifactId>
                    <version>${version.plugin.clean}</version>
                </plugin>
                <plugin>
                    <groupId>org.glassfish.copyright</groupId>
                    <artifactId>glassfish-copyright-maven-plugin</artifactId>
                    <version>${version.plugin.glassfish-copyright}</version>
                    <configuration>
                        <!--suppress UnresolvedMavenProperty -->
                        <templateFile>${copyright.template}</templateFile>
                        <!--suppress UnresolvedMavenProperty -->
                        <excludeFile>${copyright.exclude}</excludeFile>
                        <scm>git</scm>
                        <debug>false</debug>
                        <scmOnly>true</scmOnly>
                        <warn>true</warn>
                        <ignoreYear>false</ignoreYear>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>${version.plugin.checkstyle}</version>
                    <configuration>
                        <sourceDirectories>
                            <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
                        </sourceDirectories>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>com.puppycrawl.tools</groupId>
                            <artifactId>checkstyle</artifactId>
                            <version>${version.lib.checkstyle}</version>
                            <exclusions>
                                <exclusion>
                                    <groupId>com.sun</groupId>
                                    <artifactId>tools</artifactId>
                                </exclusion>
                            </exclusions>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>com.github.spotbugs</groupId>
                    <artifactId>spotbugs-maven-plugin</artifactId>
                    <version>${version.plugin.spotbugs}</version>
                    <configuration>
                        <!--suppress UnresolvedMavenProperty, MavenModelInspection -->
                        <skip>${spotbugs.skip}</skip>
                        <!--suppress UnresolvedMavenProperty -->
                        <threshold>${spotbugs.threshold}</threshold>
                        <!--suppress UnresolvedMavenProperty -->
                        <excludeFilterFile>${spotbugs.exclude}</excludeFilterFile>
                        <xmlOutput>true</xmlOutput>
                    </configuration>
                </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>
                    <configuration>
                        <serverId>ossrh</serverId>
                        <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                        <autoReleaseAfterClose>false</autoReleaseAfterClose>
                        <skipStagingRepositoryClose>false</skipStagingRepositoryClose>
                        <!--suppress UnresolvedMavenProperty, MavenModelInspection -->
                        <skipNexusStagingDeployMojo>${maven.deploy.skip}</skipNexusStagingDeployMojo>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>${version.plugin.release-plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-plugin-plugin</artifactId>
                    <version>${version.plugin.plugin-plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>buildnumber-maven-plugin</artifactId>
                    <version>${version.plugin.buildnumber}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.plexus</groupId>
                    <artifactId>plexus-component-metadata</artifactId>
                    <version>${version.lib.plexus-component}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-invoker-plugin</artifactId>
                    <version>${version.plugin.invoker}</version>
                    <configuration>
                        <addTestClassPath>true</addTestClassPath>
                        <settingsFile>src/it/settings.xml</settingsFile>
                        <mergeUserSettings>true</mergeUserSettings>
                        <localRepositoryPath>${project.build.directory}/it-repo</localRepositoryPath>
                        <!--suppress MavenModelInspection -->
                        <ignoreFailures>${maven.test.failure.ignore}</ignoreFailures>
                        <showErrors>true</showErrors>
                        <!--suppress UnresolvedMavenProperty, MavenModelInspection -->
                        <skipInvocation>${skipTests}</skipInvocation>
                        <!--suppress UnresolvedMavenProperty, MavenModelInspection -->
                        <skipInvocation>${skipTests}</skipInvocation>
                        <!--suppress UnresolvedMavenProperty, MavenModelInspection -->
                        <skipInstallation>${skipTests}</skipInstallation>
                        <pomIncludes>
                            <pomInclude>projects/*/pom.xml</pomInclude>
                        </pomIncludes>
                        <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
                        <goals>
                            <goal>clean</goal>
                            <goal>install</goal>
                        </goals>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.codehaus.groovy</groupId>
                            <artifactId>groovy</artifactId>
                            <version>${version.lib.groovy}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>${version.plugin.build-helper}</version>
                </plugin>
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>${version.plugin.jacoco}</version>
                </plugin>
                <plugin>
                    <groupId>org.eclipse.tycho</groupId>
                    <artifactId>tycho-maven-plugin</artifactId>
                    <version>${version.plugin.tycho}</version>
                </plugin>
                <plugin>
                    <groupId>org.eclipse.tycho</groupId>
                    <artifactId>target-platform-configuration</artifactId>
                    <version>${version.plugin.tycho}</version>
                </plugin>
                <plugin>
                    <groupId>org.eclipse.tycho</groupId>
                    <artifactId>tycho-compiler-plugin</artifactId>
                    <version>${version.plugin.tycho}</version>
                </plugin>
                <plugin>
                    <groupId>org.eclipse.tycho</groupId>
                    <artifactId>tycho-source-plugin</artifactId>
                    <version>${version.plugin.tycho}</version>
                </plugin>
                <plugin>
                    <groupId>org.eclipse.tycho</groupId>
                    <artifactId>tycho-surefire-plugin</artifactId>
                    <version>${version.plugin.tycho}</version>
                </plugin>
                <plugin>
                    <groupId>org.eclipse.tycho</groupId>
                    <artifactId>tycho-packaging-plugin</artifactId>
                    <version>${version.plugin.tycho}</version>
                </plugin>
                <plugin>
                    <groupId>com.github.eirslett</groupId>
                    <artifactId>frontend-maven-plugin</artifactId>
                    <version>${version.plugin.frontend}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>${version.plugin.shade}</version>
                </plugin>
                <plugin>
                    <groupId>org.moditect</groupId>
                    <artifactId>moditect-maven-plugin</artifactId>
                    <version>${version.plugin.moditect}</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>create</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <timestampFormat>{0,date,yyyy-MM-dd HH:mm:ss z}</timestampFormat>
                    <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
                    <shortRevisionLength>8</shortRevisionLength>
                </configuration>
            </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>
                                    <!--suppress UnresolvedMavenProperty -->
                                    <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>
        </plugins>
    </build>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.yaml</groupId>
                <artifactId>snakeyaml</artifactId>
                <version>${version.lib.snakeyaml}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.xml.bind</groupId>
                <artifactId>jakarta.xml.bind-api</artifactId>
                <version>${version.lib.jaxb-api}</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-core</artifactId>
                <version>${version.lib.jaxb-core}</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-impl</artifactId>
                <version>${version.lib.jaxb-impl}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish</groupId>
                <artifactId>javax.json</artifactId>
                <version>${version.lib.jsonp-impl}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-plugin-api</artifactId>
                <version>${version.lib.maven}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-core</artifactId>
                <version>${version.lib.maven}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-model</artifactId>
                <version>${version.lib.maven}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-compat</artifactId>
                <version>${version.lib.maven}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-artifact</artifactId>
                <version>${version.lib.maven}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.plugin-tools</groupId>
                <artifactId>maven-plugin-annotations</artifactId>
                <version>${version.lib.maven-annotations}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-archiver</artifactId>
                <version>${version.lib.maven-archiver}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.shared</groupId>
                <artifactId>maven-filtering</artifactId>
                <version>${version.lib.maven-filtering}</version>
            </dependency>
            <dependency>
                <groupId>org.sonatype.plexus</groupId>
                <artifactId>plexus-build-api</artifactId>
                <version>${version.lib.plexus-build-api}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.plugin-testing</groupId>
                <artifactId>maven-plugin-testing-harness</artifactId>
                <version>${version.lib.maven-plugin-testing-harness}</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-utils</artifactId>
                <version>${version.lib.plexus-utils}</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-archiver</artifactId>
                <version>${version.lib.plexus-archiver}</version>
            </dependency>
            <dependency>
                <groupId>org.asciidoctor</groupId>
                <artifactId>asciidoctorj-api</artifactId>
                <version>${version.lib.asciidoctorj}</version>
            </dependency>
            <dependency>
                <groupId>org.asciidoctor</groupId>
                <artifactId>asciidoctorj</artifactId>
                <version>${version.lib.asciidoctorj}</version>
            </dependency>
            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>${version.lib.freemarker}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${version.lib.slf4j}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jul-to-slf4j</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.slf4j</groupId>
                <artifactId>slf4j-jdk14</artifactId>
                <version>${version.lib.slf4j}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>log4j-over-slf4j</artifactId>
                <version>${version.lib.slf4j}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
                <version>${version.lib.junit}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${version.lib.junit4}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</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.platform</groupId>
                <artifactId>junit-platform-reporting</artifactId>
                <version>${version.lib.junit-platform}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.platform</groupId>
                <artifactId>junit-platform-engine</artifactId>
                <version>${version.lib.junit-platform}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.platform</groupId>
                <artifactId>junit-platform-launcher</artifactId>
                <version>${version.lib.junit-platform}</version>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-all</artifactId>
                <version>${version.lib.hamcrest}</version>
            </dependency>
            <dependency>
                <groupId>com.github.wumpz</groupId>
                <artifactId>diffutils</artifactId>
                <version>${version.lib.diffutils}</version>
            </dependency>
            <dependency>
                <groupId>com.github.spullara.mustache.java</groupId>
                <artifactId>compiler</artifactId>
                <version>${version.lib.mustache}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss</groupId>
                <artifactId>jandex</artifactId>
                <version>${version.lib.jandex}</version>
            </dependency>
            <dependency>
                <groupId>org.fusesource.jansi</groupId>
                <artifactId>jansi</artifactId>
                <version>${version.lib.jansi}</version>
            </dependency>
            <dependency>
                <groupId>info.picocli</groupId>
                <artifactId>picocli-jansi-graalvm</artifactId>
                <version>${version.lib.picocli-jansi}</version>
            </dependency>
            <dependency>
                <groupId>org.ow2.asm</groupId>
                <artifactId>asm</artifactId>
                <version>${version.lib.asm}</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-component-annotations</artifactId>
                <version>${version.lib.plexus-component}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.doxia</groupId>
                <artifactId>doxia-site-renderer</artifactId>
                <version>${version.lib.doxia}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>${version.lib.site-plugin}</version>
            </dependency>
            <dependency>
                <groupId>com.github.spotbugs</groupId>
                <artifactId>spotbugs-annotations</artifactId>
                <version>${version.lib.spotbugs-annotations}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.shared</groupId>
                <artifactId>maven-invoker</artifactId>
                <version>${version.lib.invoker}</version>
            </dependency>
            <dependency>
                <groupId>org.mock-server</groupId>
                <artifactId>mockserver-netty</artifactId>
                <version>${version.lib.mock-server}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${version.lib.jackson}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${version.lib.apache-commons}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.lsp4j</groupId>
                <artifactId>org.eclipse.lsp4j</artifactId>
                <version>${version.lib.lsp4j}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.errorprone</groupId>
                        <artifactId>error_prone_annotations</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>animal-sniffer-annotations</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.lsp4j</groupId>
                <artifactId>org.eclipse.lsp4j.jsonrpc</artifactId>
                <version>${version.lib.lsp4j}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.lsp4mp</groupId>
                <artifactId>org.eclipse.lsp4mp.ls</artifactId>
                <version>${version.lib.lsp4mp}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.lsp4mp</groupId>
                <artifactId>org.eclipse.lsp4mp.ls</artifactId>
                <classifier>tests</classifier>
                <version>${version.lib.lsp4mp}</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>${version.lib.gson}</version>
            </dependency>
            <dependency>
                <groupId>org.graalvm.sdk</groupId>
                <artifactId>graal-sdk</artifactId>
                <version>${version.lib.graalvm-sdk}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.shared</groupId>
                <artifactId>maven-artifact-transfer</artifactId>
                <version>${version.lib.maven-artifact-transfer}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.archetype</groupId>
                <artifactId>archetype-common</artifactId>
                <version>${version.lib.archetype-common}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-http</artifactId>
                <version>${version.lib.wagon-http}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.resolver</groupId>
                <artifactId>maven-resolver-impl</artifactId>
                <version>${version.lib.maven-resolver}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.resolver</groupId>
                <artifactId>maven-resolver-transport-wagon</artifactId>
                <version>${version.lib.maven-resolver}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.resolver</groupId>
                <artifactId>maven-resolver-connector-basic</artifactId>
                <version>${version.lib.maven-resolver}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-embedder</artifactId>
                <version>${version.lib.maven-embedder}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <profiles>
        <profile>
            <id>ide-support</id>
            <modules>
                <module>ide-support</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>
                                    <!--suppress UnresolvedMavenProperty -->
                                    <configLocation>${top.parent.basedir}/etc/checkstyle.xml</configLocation>
                                    <!--suppress UnresolvedMavenProperty -->
                                    <suppressionsLocation>${top.parent.basedir}/etc/checkstyle-suppressions.xml
                                    </suppressionsLocation>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>copyright</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>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>
                                    <!--suppress UnresolvedMavenProperty -->
                                    <templateFile>${top.parent.basedir}/etc/copyright.txt</templateFile>
                                    <!--suppress UnresolvedMavenProperty -->
                                    <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>
                                    <!--suppress UnresolvedMavenProperty -->
                                    <templateFile>${top.parent.basedir}/etc/copyright.txt</templateFile>
                                    <!--suppress UnresolvedMavenProperty -->
                                    <excludeFile>${top.parent.basedir}/etc/copyright-exclude.txt</excludeFile>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>debug-invoker</id>
            <activation>
                <property>
                    <name>env.MAVEN_DEBUG_OPTS</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-invoker-plugin</artifactId>
                        <configuration>
                            <environmentVariables>
                                <MAVEN_DEBUG_OPTS>-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:8001</MAVEN_DEBUG_OPTS>
                            </environmentVariables>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.sonatype.plugins</groupId>
                        <artifactId>nexus-staging-maven-plugin</artifactId>
                        <extensions>true</extensions>
                    </plugin>
                    <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>
                <!--suppress UnresolvedMavenProperty -->
                <jdkToolchainVersion>${maven.compiler.target}</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>
        <profile>
            <id>ossrh-staging</id>
            <activation>
                <property>
                    <name>ossrh</name>
                </property>
            </activation>
            <repositories>
                <repository>
                    <id>ossrh-staging</id>
                    <name>OSS Sonatype Staging</name>
                    <url>https://oss.sonatype.org/content/groups/staging/</url>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>ossrh-staging</id>
                    <name>OSS Sonatype Staging</name>
                    <url>https://oss.sonatype.org/content/groups/staging/</url>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                </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>
