<?xml version="1.0" encoding="UTF-8"?>
<!--
  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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

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

    <name>${project.artifactId}</name>
    <url>https://github.com/apache/incubator-hugegraph-toolchain</url>
    <description>
        hugegraph-toolchain is the integration project contains a series of utilities for HugeGraph,
        it includes 5+ main modules (loader/hubble/tools/clients/data connector)
    </description>

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

    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <developers>
        <developer>
            <id>Apache HugeGraph(Incubating)</id>
            <email>dev-subscribe@hugegraph.apache.org</email>
            <url>https://hugegraph.apache.org/</url>
        </developer>
    </developers>

    <mailingLists>
        <mailingList>
            <name>Developer List</name>
            <subscribe>dev-subscribe@hugegraph.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@hugegraph.apache.org</unsubscribe>
            <post>dev@hugegraph.incubator.apache.org</post>
        </mailingList>
        <mailingList>
            <name>Commits List</name>
            <subscribe>commits-subscribe@hugegraph.apache.org</subscribe>
            <unsubscribe>commits-unsubscribe@hugegraph.apache.org</unsubscribe>
            <post>commits@hugegraph.apache.org</post>
        </mailingList>
        <mailingList>
            <name>Issues List</name>
            <subscribe>issues-subscribe@hugegraph.apache.org</subscribe>
            <unsubscribe>issues-unsubscribe@hugegraph.apache.org</unsubscribe>
            <post>issues@hugegraph.apache.org</post>
        </mailingList>
    </mailingLists>

    <scm>
        <url>https://github.com/apache/hugegraph-toolchain</url>
        <connection>scm:git:https://github.com/apache/hugegraph-toolchain.git</connection>
        <developerConnection>
            scm:git:https://github.com/apache/hugegraph-toolchain.git
        </developerConnection>
    </scm>

    <issueManagement>
        <system>Github Issues</system>
        <url>https://github.com/apache/hugegraph-toolchain/issues</url>
    </issueManagement>

    <modules>
        <module>hugegraph-client</module>
        <module>hugegraph-loader</module>
        <module>hugegraph-spark-connector</module>
        <module>hugegraph-tools</module>
        <module>hugegraph-hubble</module>
        <module>hugegraph-dist</module>
    </modules>

    <properties>
        <revision>1.3.0</revision>
        <hugegraph.common.version>1.3.0</hugegraph.common.version>
        <release.name>${project.artifactId}</release.name>
        <final.name>apache-${release.name}-incubating-${project.version}</final.name>
        <assembly.dir>${project.basedir}/assembly</assembly.dir>
        <assembly.descriptor.dir>${assembly.dir}/descriptor</assembly.descriptor.dir>
        <assembly.static.dir>${assembly.dir}/static</assembly.static.dir>
        <shell-executable>bash</shell-executable>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <compiler.source>1.8</compiler.source>
        <compiler.target>1.8</compiler.target>
        <flink.version>1.13.5</flink.version>
        <flinkcdc.version>2.2.1</flinkcdc.version>
        <spark.version>3.2.2</spark.version>
        <spark.scope>provided</spark.scope>
        <flink.scope>provided</flink.scope>
        <scala.version>2.12</scala.version>
        <exec-maven-plugin.version>3.0.0</exec-maven-plugin.version>
        <docker.build.skip>true</docker.build.skip>
        <docker.push.skip>true</docker.push.skip>
        <docker.hub>hugegraph</docker.hub>
        <docker.repo>${project.name}</docker.repo>
        <docker.tag>${project.version}</docker.tag>
        <hive.version>3.1.3</hive.version>
        <hbase.version>2.2.3</hbase.version>
        <hadoop.version>3.3.1</hadoop.version>
        <zookeeper.version>3.6.2</zookeeper.version>
        <junit.version>4.12</junit.version>
        <mockito.version>2.8.47</mockito.version>
        <lombok.version>1.18.8</lombok.version>
        <commons.io.version>2.8.0</commons.io.version>
        <commons.lang3.version>3.9</commons.lang3.version>
        <commons.compress.version>1.21</commons.compress.version>
        <commons.fileupload.version>1.5</commons.fileupload.version>
        <commons.codec.version>1.15</commons.codec.version>
        <commons.cli.version>1.3.1</commons.cli.version>
        <commons.text.version>1.10.0</commons.text.version>
        <commons.net.version>3.9.0</commons.net.version>
        <commons.math3.version>3.4.1</commons.math3.version>
        <commons.logging.version>1.1.3</commons.logging.version>
        <lz4.version>1.4.0</lz4.version>
        <jcommand-version>1.72</jcommand-version>
        <jackson.version>2.12.3</jackson.version>
        <log4j2.version>2.18.0</log4j2.version>
        <dropwizard.metics.version>4.2.0</dropwizard.metics.version>
        <netty.version>4.1.65.Final</netty.version>
        <gson.version>2.8.9</gson.version>
    </properties>

    <!-- submodules will not inherit the dependencies unless they address it -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.hugegraph</groupId>
                <artifactId>hugegraph-common</artifactId>
                <version>${hugegraph.common.version}</version>
            </dependency>
            <!-- test -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.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.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>${commons.io.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons.lang3.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-compress</artifactId>
                <version>${commons.compress.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>${commons.codec.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-cli</groupId>
                <artifactId>commons-cli</artifactId>
                <version>${commons.cli.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-text</artifactId>
                <version>${commons.text.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-net</groupId>
                <artifactId>commons-net</artifactId>
                <version>${commons.net.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-math3</artifactId>
                <version>${commons.math3.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>${commons.logging.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>logkit</groupId>
                        <artifactId>logkit</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>avalon-framework</groupId>
                        <artifactId>avalon-framework</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>${commons.fileupload.version}</version>
            </dependency>
            <dependency>
                <groupId>org.lz4</groupId>
                <artifactId>lz4-java</artifactId>
                <version>${lz4.version}</version>
            </dependency>
            <dependency>
                <groupId>com.beust</groupId>
                <artifactId>jcommander</artifactId>
                <version>${jcommand-version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>${zookeeper.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
                <version>${log4j2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>${log4j2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-slf4j-impl</artifactId>
                <version>${log4j2.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson</groupId>
                <artifactId>jackson-bom</artifactId>
                <version>${jackson.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <artifactId>metrics-core</artifactId>
                <groupId>io.dropwizard.metrics</groupId>
                <version>${dropwizard.metics.version}</version>
            </dependency>
            <dependency>
                <artifactId>metrics-json</artifactId>
                <groupId>io.dropwizard.metrics</groupId>
                <version>${dropwizard.metics.version}</version>
            </dependency>
            <dependency>
                <artifactId>metrics-jvm</artifactId>
                <groupId>io.dropwizard.metrics</groupId>
                <version>${dropwizard.metics.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-bom</artifactId>
                <version>${netty.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>${gson.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies><!-- dependencies will be inherited by default here --></dependencies>

    <profiles>
        <profile>
            <id>apache-release</id>
            <build>
                <pluginManagement>
                    <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>
                        <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>
                            <configuration>
                                <doclint>none</doclint>
                                <failOnError>false</failOnError>
                            </configuration>
                        </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>
                            <configuration>
                                <!-- Prevent `gpg` from using pinentry programs -->
                                <gpgArguments>
                                    <arg>--pinentry-mode</arg>
                                    <arg>loopback</arg>
                                </gpgArguments>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>

        <!-- use mvn -P stage to enable the remote apache-stage repo -->
        <profile>
            <id>stage</id>
            <repositories>
                <repository>
                    <id>staged-releases</id>
                    <url>https://repository.apache.org/content/groups/staging/</url>
                </repository>
            </repositories>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>license-maven-plugin</artifactId>
                <version>1.19</version>
                <executions>
                    <execution>
                        <id>default-cli</id>
                        <configuration>
                            <!-- Accept the pom module -->
                            <acceptPomPackaging>true</acceptPomPackaging>
                            <!-- Using the template which is grouped by License file -->
                            <fileTemplate>
                                /org/codehaus/mojo/license/third-party-file-groupByMultiLicense.ftl
                            </fileTemplate>
                            <licenseMerges>
                                <licenseMerge>The Apache Software License, Version 2.0|The Apache
                                    License, Version 2.0
                                </licenseMerge>
                                <licenseMerge>The Apache Software License, Version 2.0|Apache
                                    License, Version 2.0
                                </licenseMerge>
                                <licenseMerge>The Apache Software License, Version 2.0|Apache Public
                                    License 2.0
                                </licenseMerge>
                                <licenseMerge>The Apache Software License, Version 2.0|Apache 2
                                </licenseMerge>
                                <licenseMerge>The Apache Software License, Version 2.0|Apache 2.0
                                </licenseMerge>
                                <licenseMerge>The Apache Software License, Version 2.0|Apache-2.0
                                </licenseMerge>
                                <licenseMerge>The Apache Software License, Version 2.0|Apache
                                    License 2.0
                                </licenseMerge>
                                <licenseMerge>The Apache Software License, Version 2.0|Apache
                                    License, version 2.0
                                </licenseMerge>
                                <licenseMerge>3-Clause BSD License|BSD 3-clause</licenseMerge>
                                <licenseMerge>3-Clause BSD License|BSD 3-Clause</licenseMerge>
                                <licenseMerge>Eclipse Public License v1.0|Eclipse Public License 1.0
                                </licenseMerge>
                                <licenseMerge>Eclipse Public License v1.0|Eclipse Public License - v
                                    1.0
                                </licenseMerge>
                                <licenseMerge>The MIT License|MIT License</licenseMerge>
                            </licenseMerges>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>3.1.2</version>
                <dependencies>
                    <dependency>
                        <groupId>com.puppycrawl.tools</groupId>
                        <artifactId>checkstyle</artifactId>
                        <version>8.45</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <configLocation>tools/checkstyle.xml</configLocation>
                    <encoding>UTF-8</encoding>
                    <consoleOutput>true</consoleOutput>
                    <failsOnError>true</failsOnError>
                    <linkXRef>false</linkXRef>
                    <includeTestSourceDirectory>false</includeTestSourceDirectory>
                    <suppressionsLocation>tools/suppressions.xml</suppressionsLocation>
                </configuration>
                <executions>
                    <execution>
                        <id>validate</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Apache RAT for license check -->
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/*.versionsBackup</exclude>
                        <exclude>**/*.log</exclude>
                        <exclude>**/*.txt</exclude>
                        <exclude>**/*.csv</exclude>
                        <exclude>**/*.conf</exclude>
                        <exclude>**/*.gitattributes</exclude>
                        <exclude>dist/**/*</exclude>
                        <exclude>docs/**/*</exclude>
                        <exclude>scripts/dev/reviewers</exclude>
                        <exclude>**/*.md</exclude>
                        <exclude>**/logs/*.log</exclude>
                        <exclude>**/target/*</exclude>
                        <exclude>style/*</exclude>
                        <exclude>ChangeLog</exclude>
                        <exclude>CONFIG.ini</exclude>
                        <exclude>GROUPS</exclude>
                        <exclude>OWNERS</exclude>
                        <exclude>DISCLAIMER</exclude>
                        <!-- FE-Hubble -->
                        <exclude>**/*.json</exclude>
                        <exclude>**/*.lock</exclude>
                        <exclude>**/.prettierrc</exclude>
                        <exclude>**/.stylelintrc</exclude>
                        <exclude>**/check_server_status.feature</exclude>
                        <exclude>**/file_with_empty_line</exclude>
                        <exclude>**/file_without_empty_line</exclude>
                        <exclude>node_modules/**/*</exclude>
                        <exclude>**/*.svg</exclude>
                        <!-- GitHub -->
                        <exclude>.github/**/*</exclude>
                        <!-- Intellij -->
                        <exclude>**/*.iml</exclude>
                        <exclude>**/*.iws</exclude>
                        <exclude>**/*.ipr</exclude>
                        <exclude>**/META-INF/MANIFEST.MF</exclude>
                        <!-- Maven -->
                        <exclude>.repository/**</exclude>
                        <exclude>**/.flattened-pom.xml</exclude>
                        <!-- Go -->
                        <exclude>**/hugegraph-client-go/go.sum</exclude>
                        <exclude>**/hugegraph-client-go/go.mod</exclude>
                    </excludes>
                    <consoleOutput>true</consoleOutput>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>flatten-maven-plugin</artifactId>
                <version>1.3.0</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>
                    <!-- auto delete .flattened-pom.xml after "install" step, will influence deploy step now-->
                    <!--execution>
                        <id>remove-flattened-pom</id>
                        <phase>install</phase>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                    </execution-->
                </executions>
            </plugin>
        </plugins>
        <!-- Note: plugin will not execute in management by default in root -->
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>${compiler.source}</source>
                        <target>${compiler.target}</target>
                        <encoding>${project.build.sourceEncoding}</encoding>
                        <compilerArguments>
                            <Xmaxerrs>500</Xmaxerrs>
                        </compilerArguments>
                        <compilerArgs>
                            <arg>-Xlint:unchecked</arg>
                        </compilerArgs>
                    </configuration>
                </plugin>
                <!--            <plugin>-->
                <!--                <groupId>org.apache.maven.plugins</groupId>-->
                <!--                <artifactId>maven-assembly-plugin</artifactId>-->
                <!--                <version>2.4</version>-->
                <!--                <executions>-->
                <!--                    <execution>-->
                <!--                        <id>assembly-hugegraph-toolchain</id>-->
                <!--                        <phase>package</phase>-->
                <!--                        <goals>-->
                <!--                            <goal>single</goal>-->
                <!--                        </goals>-->
                <!--                        <configuration>-->
                <!--                            <attach>false</attach>-->
                <!--                            <appendAssemblyId>false</appendAssemblyId>-->
                <!--                            <outputDirectory>${project.basedir}</outputDirectory>-->
                <!--                            <descriptor>${assembly.descriptor.dir}/assembly.xml</descriptor>-->
                <!--                            <finalName>${final.name}</finalName>-->
                <!--                        </configuration>-->
                <!--                    </execution>-->
                <!--                </executions>-->
                <!--            </plugin>-->
                <!--            <plugin>-->
                <!--                <artifactId>maven-antrun-plugin</artifactId>-->
                <!--                <executions>-->
                <!--                    <execution>-->
                <!--                        <phase>package</phase>-->
                <!--                        <goals>-->
                <!--                            <goal>run</goal>-->
                <!--                        </goals>-->
                <!--                        <configuration>-->
                <!--                            <tasks>-->
                <!--                                <echo file="${project.basedir}/dist.sh">-->
                <!--                                    tar -zcvf \-->
                <!--                                    ${project.basedir}/${final.name}.tar.gz ${final.name} || exit 1-->
                <!--                                    rm -f ${project.basedir}/dist.sh-->
                <!--                                    echo -n "hugegraph-loader tar.gz available at: "-->
                <!--                                    echo "${project.basedir}/${final.name}.tar.gz"-->
                <!--                                </echo>-->
                <!--                                <exec executable="${shell-executable}"-->
                <!--                                      dir="${project.basedir}" failonerror="true">-->
                <!--                                    <arg line="./dist.sh"/>-->
                <!--                                </exec>-->
                <!--                            </tasks>-->
                <!--                        </configuration>-->
                <!--                    </execution>-->
                <!--                </executions>-->
                <!--            </plugin>-->
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <configuration>
                        <filesets>
                            <fileset>
                                <directory>${project.basedir}</directory>
                                <includes>
                                    <include>*.tar.gz</include>
                                    <include>${final.name}/**</include>
                                    <include>.flattened-pom.xml</include>
                                </includes>
                                <followSymlinks>false</followSymlinks>
                            </fileset>
                            <fileset>
                                <directory>${final.name}</directory>
                            </fileset>
                        </filesets>
                    </configuration>
                </plugin>
                <!--            <plugin>-->
                <!--                <groupId>org.jacoco</groupId>-->
                <!--                <artifactId>jacoco-maven-plugin</artifactId>-->
                <!--                <version>0.8.4</version>-->
                <!--                <executions>-->
                <!--                    <execution>-->
                <!--                        <id>pre-unit-test</id>-->
                <!--                        <goals>-->
                <!--                            <goal>prepare-agent</goal>-->
                <!--                        </goals>-->
                <!--                    </execution>-->
                <!--                    <execution>-->
                <!--                        <id>post-unit-test</id>-->
                <!--                        <phase>test</phase>-->
                <!--                        <goals>-->
                <!--                            <goal>report</goal>-->
                <!--                        </goals>-->
                <!--                        <configuration>-->
                <!--                            <outputDirectory>-->
                <!--                                ${project.build.directory}-->
                <!--                            </outputDirectory>-->
                <!--                        </configuration>-->
                <!--                    </execution>-->
                <!--                </executions>-->
                <!--            </plugin>-->
                <!--            <plugin>-->
                <!--                <groupId>org.codehaus.mojo</groupId>-->
                <!--                <artifactId>properties-maven-plugin</artifactId>-->
                <!--                <version>1.0.0</version>-->
                <!--                <executions>-->
                <!--                    <execution>-->
                <!--                        <phase>generate-resources</phase>-->
                <!--                        <goals>-->
                <!--                            <goal>write-project-properties</goal>-->
                <!--                        </goals>-->
                <!--                        <configuration>-->
                <!--                            <outputFile>-->
                <!--                                ${project.build.testOutputDirectory}/profile.properties-->
                <!--                            </outputFile>-->
                <!--                        </configuration>-->
                <!--                    </execution>-->
                <!--                </executions>-->
                <!--            </plugin>-->
                <!--            <plugin>-->
                <!--                <groupId>org.apache.maven.plugins</groupId>-->
                <!--                <artifactId>maven-resources-plugin</artifactId>-->
                <!--                <version>2.7</version>-->
                <!--                <configuration>-->
                <!--                    <encoding>UTF-8</encoding>-->
                <!--                    <nonFilteredFileExtensions>-->
                <!--                        <nonFilteredFileExtension>parquet</nonFilteredFileExtension>-->
                <!--                    </nonFilteredFileExtensions>-->
                <!--                </configuration>-->
                <!--            </plugin>-->
                <!--            <plugin>-->
                <!--                <groupId>org.apache.maven.plugins</groupId>-->
                <!--                <artifactId>maven-surefire-plugin</artifactId>-->
                <!--                <version>2.20</version>-->
                <!--                <configuration>-->
                <!--                    <includes>-->
                <!--                        <include>${test-classes}</include>-->
                <!--                    </includes>-->
                <!--                </configuration>-->
                <!--            </plugin>-->
                <!-- TODO: after all modules fix checkstyle, enable it in root again -->
            </plugins>
        </pluginManagement>
        <!--        <testResources>-->
        <!--            <testResource>-->
        <!--                <directory>src/test/resources/</directory>-->
        <!--                <filtering>true</filtering>-->
        <!--            </testResource>-->
        <!--        </testResources>-->
    </build>
</project>
