<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache</groupId>
        <artifactId>apache</artifactId>
        <version>23</version>
    </parent>

    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-parent</artifactId>
    <version>${revision}</version>
    <packaging>pom</packaging>

    <name>${project.artifactId}</name>
    <description>The parent project of dubbo</description>
    <url>https://github.com/apache/dubbo</url>
    <inceptionYear>2011</inceptionYear>
    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <scm>
        <url>https://github.com/apache/dubbo</url>
        <connection>scm:git:https://github.com/apache/dubbo.git</connection>
        <developerConnection>scm:git:https://github.com/apache/dubbo.git</developerConnection>
        <tag>HEAD</tag>
    </scm>
    <mailingLists>
        <mailingList>
            <name>Development List</name>
            <subscribe>dev-subscribe@dubbo.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@dubbo.apache.org</unsubscribe>
            <post>dev@dubbo.apache.org</post>
        </mailingList>
        <mailingList>
            <name>Commits List</name>
            <subscribe>commits-subscribe@dubbo.apache.org</subscribe>
            <unsubscribe>commits-unsubscribe@dubbo.apache.org</unsubscribe>
            <post>commits@dubbo.apache.org</post>
        </mailingList>
        <mailingList>
            <name>Issues List</name>
            <subscribe>issues-subscribe@dubbo.apache.org</subscribe>
            <unsubscribe>issues-unsubscribe@dubbo.apache.org</unsubscribe>
            <post>issues@dubbo.apache.org</post>
        </mailingList>
    </mailingLists>
    <developers>
        <developer>
            <id>dubbo.io</id>
            <name>The Dubbo Project Contributors</name>
            <email>dev-subscribe@dubbo.apache.org</email>
            <url>http://dubbo.apache.org/</url>
        </developer>
    </developers>

    <organization>
        <name>The Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
    </organization>

    <issueManagement>
        <system>Github Issues</system>
        <url>https://github.com/apache/dubbo/issues</url>
    </issueManagement>

    <properties>
        <!-- Test libs -->
        <junit_jupiter_version>5.7.1</junit_jupiter_version>
        <hazelcast_version>3.11.1</hazelcast_version>
        <hamcrest_version>2.2</hamcrest_version>
        <hibernate_validator_version>5.2.4.Final</hibernate_validator_version>
        <el_api_version>2.2.4</el_api_version>
        <jaxb_api_version>2.2.7</jaxb_api_version>
        <cglib_version>2.2</cglib_version>
        <mockito_version>3.8.0</mockito_version>
        <!-- Build args -->
        <argline>-server -Xms256m -Xmx512m -Dfile.encoding=UTF-8
            -Djava.net.preferIPv4Stack=true -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m
        </argline>
        <skip_maven_deploy>false</skip_maven_deploy>
        <updateReleaseInfo>true</updateReleaseInfo>
        <project.build.sourceEncoding>${file_encoding}</project.build.sourceEncoding>
        <project.build.outputTimestamp>2020-04-01T08:04:00Z</project.build.outputTimestamp>

        <profile.name>oss</profile.name>
        <!-- for maven compiler plugin -->
        <java_source_version>1.8</java_source_version>
        <java_target_version>1.8</java_target_version>
        <file_encoding>UTF-8</file_encoding>
        <!-- Maven plugins -->
        <maven_jar_version>3.2.0</maven_jar_version>
        <maven_surefire_version>3.0.0-M5</maven_surefire_version>
        <maven_failsafe_version>3.0.0-M5</maven_failsafe_version>
        <maven_deploy_version>2.8.2</maven_deploy_version>
        <maven_compiler_version>3.8.1</maven_compiler_version>
        <maven_source_version>3.2.1</maven_source_version>
        <maven_javadoc_version>3.2.0</maven_javadoc_version>
        <maven_jetty_version>9.4.38.v20210224</maven_jetty_version>
        <maven_checkstyle_version>3.1.2</maven_checkstyle_version>
        <maven_jacoco_version>0.8.6</maven_jacoco_version>
        <maven_flatten_version>1.2.5</maven_flatten_version>
        <maven_enforce_version>3.0.0-M3</maven_enforce_version>
        <apache-rat-plugin.version>0.13</apache-rat-plugin.version>
        <arguments />
        <checkstyle.skip>true</checkstyle.skip>
        <rat.skip>true</rat.skip>
        <revision>2.7.24-SNAPSHOT</revision>
    </properties>

    <modules>
        <module>dubbo-common</module>
        <module>dubbo-container</module>
        <module>dubbo-remoting</module>
        <module>dubbo-rpc</module>
        <module>dubbo-filter</module>
        <module>dubbo-cluster</module>
        <module>dubbo-registry</module>
        <module>dubbo-monitor</module>
        <module>dubbo-config</module>
        <module>dubbo-demo</module>
        <module>dubbo-plugin</module>
        <module>dubbo-serialization</module>
        <module>dubbo-compatible</module>
        <module>dubbo-dependencies-bom</module>
        <module>dubbo-bom</module>
        <module>dubbo-all</module>
        <module>dubbo-distribution</module>
        <module>dubbo-configcenter</module>
        <module>dubbo-dependencies</module>
        <module>dubbo-metadata</module>
        <module>dubbo-build-tools</module>
        <module>dubbo-spring-boot</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-dependencies-bom</artifactId>
                <version>${project.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit_jupiter_version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>${junit_jupiter_version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest</artifactId>
            <version>${hamcrest_version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>${mockito_version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-inline</artifactId>
            <version>${mockito_version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib-nodep</artifactId>
            <version>${cglib_version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <profiles>
        <profile>
            <id>snapshot-ci-deploy</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-enforcer-plugin</artifactId>
                        <version>${maven_enforce_version}</version>
                        <executions>
                            <execution>
                                <id>enforce-no-releases</id>
                                <goals>
                                    <goal>enforce</goal>
                                </goals>
                                <configuration>
                                    <rules>
                                        <requireSnapshotVersion>
                                            <message>No Releases Allowed!</message>
                                            <failWhenParentIsRelease>false</failWhenParentIsRelease>
                                        </requireSnapshotVersion>
                                    </rules>
                                    <fail>true</fail>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>javadoc-lint</id>
            <activation>
                <jdk>[1.8,)</jdk>
            </activation>
            <properties>
                <doclint>none</doclint>
            </properties>
        </profile>
        <profile>
            <id>checkstyle</id>
            <activation>
                <jdk>[1.8,)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-checkstyle-plugin</artifactId>
                        <version>${maven_checkstyle_version}</version>
                        <dependencies>
                            <dependency>
                                <groupId>com.puppycrawl.tools</groupId>
                                <artifactId>checkstyle</artifactId>
                                <version>8.41</version>
                            </dependency>
                            <dependency>
                                <groupId>org.apache.dubbo</groupId>
                                <artifactId>dubbo-build-tools</artifactId>
                                <version>1.0.0</version>
                            </dependency>
                        </dependencies>
                        <executions>
                            <execution>
                                <id>checkstyle-validation</id>
                                <phase>validate</phase>
                                <configuration>
                                    <configLocation>codestyle/checkstyle.xml</configLocation>
                                    <suppressionsLocation>codestyle/checkstyle-suppressions.xml</suppressionsLocation>
                                    <encoding>UTF-8</encoding>
                                    <consoleOutput>true</consoleOutput>
                                    <failOnViolation>true</failOnViolation>
                                    <excludes>
                                        **/JSONWriter.java,
                                        **/org/apache/dubbo/common/threadlocal/InternalThreadLocal.java,
                                        **/org/apache/dubbo/common/threadlocal/InternalThreadLocalMap.java,
                                        **/org/apache/dubbo/common/timer/TimerTask.java,
                                        **/org/apache/dubbo/common/timer/Timer.java,
                                        **/org/apache/dubbo/common/timer/Timeout.java,
                                        **/org/apache/dubbo/common/timer/HashedWheelTimer.java,
                                        **/org/apache/dubbo/common/utils/CIDRUtils.java,
                                        **/org/apache/dubbo/common/utils/Utf8Utils.java,
                                        **/org/apache/dubbo/common/serialize/protobuf/support/wrapper/MapValue.java,
                                        **/org/apache/dubbo/common/serialize/protobuf/support/wrapper/ThrowablePB.java,
                                    </excludes>
                                </configuration>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>sources</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>${maven_source_version}</version>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>release</id>
            <properties>
                <log4j2_version>2.17.2</log4j2_version>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>${maven_source_version}</version>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>${maven_javadoc_version}</version>
                        <executions>
                            <execution>
                                <id>attach-javadoc</id>
                                <goals>
                                    <goal>jar</goal>
                                    <goal>aggregate</goal>
                                </goals>
                                <configuration>
                                    <additionalDependencies>
                                        <additionalDependency>
                                            <groupId>org.apache.logging.log4j</groupId>
                                            <artifactId>log4j-api</artifactId>
                                            <version>${log4j2_version}</version>
                                        </additionalDependency>
                                        <additionalDependency>
                                            <groupId>org.apache.logging.log4j</groupId>
                                            <artifactId>log4j-core</artifactId>
                                            <version>${log4j2_version}</version>
                                        </additionalDependency>
                                    </additionalDependencies>
                                </configuration>
                            </execution>
                        </executions>
                        <configuration>
                            <show>public</show>
                            <charset>UTF-8</charset>
                            <encoding>UTF-8</encoding>
                            <docencoding>UTF-8</docencoding>
                            <links>
                                <link>http://docs.oracle.com/javase/8/docs/api</link>
                            </links>
                            <doclint>none</doclint>
                            <excludePackageNames>
                                org.apache.dubbo.demo,org.apache.dubbo.demo.*
                            </excludePackageNames>
                            <doctitle>Apache Dubbo ${project.version} API</doctitle>
                            <windowtitle>Apache Dubbo ${project.version} API</windowtitle>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>licenseCheck</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>license-maven-plugin</artifactId>
                        <version>2.0.0</version>
                        <executions>
                            <execution>
                                <id>license-check</id>
                                <phase>generate-sources</phase>
                                <goals>
                                    <goal>add-third-party</goal>
                                </goals>
                                <configuration>
                                    <includeOptional>false</includeOptional>
                                    <useMissingFile>false</useMissingFile>
                                    <failOnMissing>false</failOnMissing>
                                    <licenseMerges>
                                        <licenseMerge>Apache License, Version 2.0|The Apache Software License, Version
                                            2.0|ASF 2.0|Apache 2|Apache-2.0|Apache 2.0 License|Apache 2.0|Apache License v2.0|Apache License 2.0|The Apache License, Version 2.0|The Apache Software License, Version 2.0
                                        </licenseMerge>
                                        <licenseMerge>The MIT License|MIT License</licenseMerge>
                                        <licenseMerge>The 3-Clause BSD License|New BSD License|3-Clause BSD
                                            License|BSD|3-Clause BSD License|The New BSD License
                                        </licenseMerge>
                                    </licenseMerges>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>jdk9-compile</id>
            <activation>
                <jdk>[1.9,)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration>
                            <release>8</release>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <build>
        <!-- Used for packaging NOTICE & LICENSE to each sub-module jar-->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>${maven.multiModuleProjectDirectory}</directory>
                <targetPath>META-INF/</targetPath>
                <filtering>false</filtering>
                <includes>
                    <include>NOTICE</include>
                    <include>LICENSE</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <version>${maven_jar_version}</version>
                <configuration>
                    <archive>
                        <addMavenDescriptor>true</addMavenDescriptor>
                        <index>true</index>
                        <manifest>
                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        </manifest>
                        <manifestEntries>
                            <Specification-Version>${project.version}</Specification-Version>
                            <Implementation-Version>${project.version}</Implementation-Version>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <useSystemClassLoader>true</useSystemClassLoader>
                    <forkMode>once</forkMode>
                    <argLine>${argline} ${jacocoArgLine}</argLine>
                    <systemProperties>
                        <!-- common shared -->
                    </systemProperties>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>${maven_deploy_version}</version>
                <configuration>
                    <skip>${skip_maven_deploy}</skip>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven_compiler_version}</version>
                <configuration>
                    <compilerArgs>
                        <compilerArg>-proc:none</compilerArg>
                        <compilerArg>-parameters</compilerArg>
                    </compilerArgs>
                    <fork>true</fork>
                    <source>${java_source_version}</source>
                    <target>${java_target_version}</target>
                    <encoding>${file_encoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>${maven_jacoco_version}</version>
                <executions>
                    <execution>
                        <id>jacoco-initialize</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                        <configuration>
                            <propertyName>jacocoArgLine</propertyName>
                        </configuration>
                    </execution>
                    <execution>
                        <id>report-aggregate</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>report-aggregate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <version>${apache-rat-plugin.version}</version>
                <executions>
                    <execution>
                        <id>verify.rat</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                        <configuration>
                            <excludes>
                                <exclude>**/*.versionsBackup</exclude>
                                <exclude>**/.idea/</exclude>
                                <exclude>**/.mvn/</exclude>
                                <exclude>**/*.iml</exclude>
                                <exclude>**/*.txt</exclude>
                                <exclude>**/*.load</exclude>
                                <exclude>**/*.flex</exclude>
                                <exclude>**/*.fc</exclude>
                                <exclude>**/*.sh</exclude>
                                <exclude>**/*.bat</exclude>
                                <exclude>**/*.md</exclude>
                                <exclude>**/*.properties</exclude>
                                <exclude>.git/</exclude>
                                <exclude>.gitignore</exclude>
                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
                                <exclude>.repository/</exclude>
                                <exclude>**/.settings/*</exclude>
                                <exclude>**/.classpath</exclude>
                                <exclude>**/.project</exclude>
                                <exclude>**/target/**</exclude>
                                <exclude>**/*.log</exclude>
                                <exclude>CODE_OF_CONDUCT.md</exclude>
                                <exclude>.codecov.yml</exclude>
                                <exclude>.travis.yml</exclude>
                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
                                <exclude>CONTRIBUTING.md</exclude>
                                <exclude>README.md</exclude>
                                <exclude>Jenkinsfile</exclude>
                                <exclude>**/codestyle/*</exclude>
                                <exclude>**/resources/META-INF/**</exclude>
                                <!-- exclude the netty files -->
                                <exclude>**/org/apache/dubbo/common/threadlocal/InternalThreadLocal.java</exclude>
                                <exclude>**/org/apache/dubbo/common/threadlocal/InternalThreadLocalMap.java</exclude>
                                <exclude>**/org/apache/dubbo/common/timer/TimerTask.java</exclude>
                                <exclude>**/org/apache/dubbo/common/timer/Timer.java</exclude>
                                <exclude>**/org/apache/dubbo/common/timer/Timeout.java</exclude>
                                <exclude>**/org/apache/dubbo/common/timer/HashedWheelTimer.java</exclude>
                                <!-- exclude the edazdarevic files -->
                                <exclude>**/org/apache/dubbo/common/utils/CIDRUtils.java</exclude>
                                <!-- exclude protobuf generated files -->
                                <exclude>**/org/apache/dubbo/common/serialize/protobuf/support/wrapper/MapValue.java
                                </exclude>
                                <exclude>
                                    **/org/apache/dubbo/common/serialize/protobuf/support/wrapper/ThrowablePB.java
                                </exclude>
                                <exclude>
                                    **/org/apache/dubbo/common/utils/Utf8Utils.java
                                </exclude>
                                <exclude>.github/**</exclude>
                                <exclude>compiler/**</exclude>
                                <!-- exclude mockito extensions spi files -->
                                <exclude>**/mockito-extensions/*</exclude>
                            </excludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>3.0.0-M1</version>
                <configuration>
                    <autoVersionSubmodules>true</autoVersionSubmodules>
                    <useReleaseProfile>false</useReleaseProfile>
                    <releaseProfiles>release</releaseProfiles>
                    <goals>deploy</goals>
                    <arguments>${arguments}</arguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>flatten-maven-plugin</artifactId>
                <version>${maven_flatten_version}</version>
                <configuration>
                    <updatePomFile>true</updatePomFile>
                    <flattenMode>resolveCiFriendliesOnly</flattenMode>
                </configuration>
                <executions>
                    <execution>
                        <id>flatten</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>flatten</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>flatten.clean</id>
                        <phase>clean</phase>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

        <pluginManagement>
            <plugins>
                <!-- keep surefire and failsafe in sync -->
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${maven_surefire_version}</version>
                    <configuration>
                        <!-- Activate the use of TCP to transmit events to the plugin to fix Corrupted STDOUT issue -->
                        <forkNode implementation="org.apache.maven.plugin.surefire.extensions.SurefireForkNodeFactory"/>
                    </configuration>
                </plugin>
                <!-- keep surefire and failsafe in sync -->
                <plugin>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>${maven_failsafe_version}</version>
                </plugin>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <groupId>org.ops4j.pax.exam</groupId>
                    <artifactId>maven-paxexam-plugin</artifactId>
                    <version>1.2.4</version>
                </plugin>
                <plugin>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>3.1.2</version>
                </plugin>
                <plugin>
                    <!-- Do NOT upgrade -->
                    <artifactId>maven-jxr-plugin</artifactId>
                    <version>2.2</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>3.2.0</version>
                </plugin>
                <plugin>
                    <groupId>org.fusesource.hawtjni</groupId>
                    <artifactId>maven-hawtjni-plugin</artifactId>
                    <version>1.15</version>
                </plugin>
                <plugin>
                    <groupId>kr.motd.maven</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.0.0.Final</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>3.2.4</version>
                    <configuration>
                        <createDependencyReducedPom>false</createDependencyReducedPom>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-maven-plugin</artifactId>
                    <version>${maven_jetty_version}</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
