<?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>
  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>
  </dependencies>

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

  <groupId>org.apache.helix</groupId>
  <artifactId>helix</artifactId>
  <version>1.0.3-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Apache Helix</name>

  <description>
    Helix is a generic cluster management framework used for the automatic management of partitioned, replicated and
    distributed resources hosted on a cluster of nodes.
  </description>

  <url>http://helix.apache.org</url>
  <developers>
    <developer>
      <id>kishoreg</id>
      <name>Kishore Gopalakrishna</name>
      <email>kishoreg@apache.org</email>
      <roles>
        <role>PMC Chair</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>olamy</id>
      <name>Olivier Lamy</name>
      <email>olamy@apache.org</email>
      <roles>
        <role>Mentor / PMC Member</role>
      </roles>
      <timezone>Australia/Melbourne</timezone>
    </developer>
    <developer>
      <id>phunt</id>
      <name>Patrick Hunt</name>
      <email>phunt@apache.org</email>
      <roles>
        <role>Mentor / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>mahadev</id>
      <name>Mahadev Konar</name>
      <email>mahadev@apache.org</email>
      <roles>
        <role>Mentor / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>omalley</id>
      <name>Owen O'Malley</name>
      <email>omalley@apache.org</email>
      <roles>
        <role>Mentor / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>zzhang</id>
      <name>Zhen Zhang</name>
      <email>zzhang@apache.org</email>
      <roles>
        <role>Committer / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>slu</id>
      <name>Shi Lu</name>
      <email>slu@apache.org</email>
      <roles>
        <role>Committer / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>TBA</id>
      <name>Adam Silberstein</name>
      <email>TBA@apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>ksurlaker</id>
      <name>Kapil Surlaker</name>
      <email>ksurlaker@apache.org</email>
      <roles>
        <role>Committer / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>rms</id>
      <name>Bob Schulman</name>
      <email>rms@apache.org</email>
      <roles>
        <role>Committer / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>swaroop-aj</id>
      <name>Swaroop Jagadish</name>
      <email>swaroop-aj@apache.org</email>
      <roles>
        <role>Committer / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>rahula</id>
      <name>Rahul Aggarwal</name>
      <email>rahula@apache.org</email>
      <roles>
        <role>Committer / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>chtyim</id>
      <name>Terence Yim</name>
      <email>chtyim@apache.org</email>
      <roles>
        <role>Committer / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>santip</id>
      <name>Santiago Perez</name>
      <email>santip@apache.org</email>
      <roles>
        <role>Committer / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>vinayakb</id>
      <name>Vinayak Borkar</name>
      <email>vinayakb@apache.org</email>
      <roles>
        <role>Committer / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>shirshanka</id>
      <name>Shirshanka Das</name>
      <email>shirshanka@apache.org</email>
      <roles>
        <role>Committer / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>kanak</id>
      <name>Kanak Biscuitwala</name>
      <email>kanak@apache.org</email>
      <roles>
        <role>Committer / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>gbrandt</id>
      <name>Greg Brandt</name>
      <email>gbrandt@apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>lxia</id>
      <name>Lei Xia</name>
      <email>lxia@apache.org</email>
      <roles>
        <role>Committer / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>jxue</id>
      <name>Junkai Xue</name>
      <email>jxue@apache.org</email>
      <roles>
        <role>Committer / PMC Member</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>jiajunwang</id>
      <name>Jiajun Wang</name>
      <email>jiajunwang@apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>hulee</id>
      <name>Hunter Lee</name>
      <email>hulee@apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>alizamus</id>
      <name>Ali Reza Zamani</name>
      <email>alizamus@apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>hzlu</id>
      <name>Huizhi Lu</name>
      <email>hzlu@apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>zhangmeng</id>
      <name>Meng Zhang</name>
      <email>zhangmeng@apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
  </developers>
  <modules>
    <module>metrics-common</module>
    <module>metadata-store-directory-common</module>
    <module>zookeeper-api</module>
    <module>helix-common</module>
    <module>helix-core</module>
    <module>helix-admin-webapp</module>
    <module>helix-rest</module>
    <module>helix-lock</module>
    <module>helix-agent</module>
    <!--<module>helix-front</module>-->
    <module>recipes</module>
  </modules>

  <mailingLists>
    <mailingList>
      <name>Users</name>
      <post>user@helix.apache.org</post>
      <subscribe>user-subscribe@helix.apache.org</subscribe>
      <unsubscribe>user-unsubscribe@helix.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/helix-user/</archive>
      <otherArchives>
        <otherArchive>http://helix-user.markmail.org</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>Development</name>
      <post>dev@helix.apache.org</post>
      <subscribe>dev-subscribe@helix.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@helix.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/helix-dev/</archive>
      <otherArchives>
        <otherArchive>http://helix-dev.markmail.org</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>PR Reviews</name>
      <post>reviews@helix.apache.org</post>
      <subscribe>reviews-subscribe@helix.apache.org</subscribe>
      <unsubscribe>reviews-unsubscribe@helix.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/helix-reviews/</archive>
      <otherArchives>
        <otherArchive>http://helix-reviews.markmail.org</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>Commits</name>
      <post>commits@helix.apache.org</post>
      <subscribe>commits-subscribe@helix.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@helix.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/helix-commits/</archive>
      <otherArchives>
        <otherArchive>http://helix-comits.markmail.org</otherArchive>
      </otherArchives>
    </mailingList>
  </mailingLists>

  <repositories>
    <repository>
      <id>restlet.talend.com</id>
      <url>https://maven.restlet.talend.com</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>mvnrepository.com</id>
      <url>https://mvnrepository.com</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>


  <pluginRepositories>
    <pluginRepository>
      <id>apache.snapshots</id>
      <url>https://repository.apache.org/content/repositories/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
    <pluginRepository>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
    </pluginRepository>
  </pluginRepositories>

  <scm>
    <connection>scm:git:https://git-wip-us.apache.org/repos/asf/helix.git</connection>
    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/helix.git</developerConnection>
    <url>https://git-wip-us.apache.org/repos/asf?p=helix.git;a=summary</url>
    <tag>HEAD</tag>
  </scm>
  <issueManagement>
    <system>Github</system>
    <url>https://github.com/apache/helix/issues</url>
  </issueManagement>
  <ciManagement>
    <system>Jenkins</system>
    <url>https://builds.apache.org/view/G-L/view/Helix/</url>
  </ciManagement>

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.build.outputTimestamp>10</project.build.outputTimestamp>

    <sonar.host.url>https://analysis.apache.org/</sonar.host.url>

    <maven-scm-provider-svnjava.version>2.0.6</maven-scm-provider-svnjava.version>
    <svnkit.version>1.7.11</svnkit.version>

    <helix.siteFilePath>${user.home}/helix-site/helix-site-deploy</helix.siteFilePath>
    <!-- you can use javasvn too -->
    <svnImpl>svn</svnImpl>
    <helix.siteUrlDeployment>file://${helix.siteFilePath}</helix.siteUrlDeployment>
    <helix.scmPubCheckoutDirectory>${user.home}/helix-site/helix-site-content</helix.scmPubCheckoutDirectory>
    <scmSkipDeletedFiles>false</scmSkipDeletedFiles>
    <!-- fix issue with current apache parent pom -->
    <arguments />

    <!-- for svnpubsub site deployment -->
    <helix.release.preparationGoals>clean install</helix.release.preparationGoals>
    <helix.release.performGoals>deploy</helix.release.performGoals>
    <helix.release.arguments>-Papache-release -DskipTests</helix.release.arguments>

    <!-- for release changelog and download pages -->
    <currentRelease>0.8.0</currentRelease>

    <!-- OSGi Properties -->
    <osgi.import />
    <osgi.dynamic.import />
    <osgi.require.bundles />
    <osgi.export />
    <osgi.private />
    <osgi.ignore />
    <osgi.activator />
    <osgi.export.service />

    <!--Skips test in default 'mvn clean install' build command-->
    <!-- <maven.test.skip.exec>true</maven.test.skip.exec> -->

    <!--  Configuration for unit/integration tests section 1 of 3 (properties) STARTS HERE.
    Property for running integration tests with profiles
    at the command line, where you do:
    mvn integration-test -P integration-test
    See also: the surefire plugin section and the profiles section.-->
    <SKIP_INTEGRATION_TESTS>true</SKIP_INTEGRATION_TESTS>
    <!-- Configuration for unit/integration tests section 1 of 3 (properties) ENDS HERE.-->

    <metrics-core.version>4.1.14</metrics-core.version>
    <metrics-jersey2.version>4.1.14</metrics-jersey2.version>
    <metrics-jmx.version>4.1.14</metrics-jmx.version>
  </properties>

  <distributionManagement>
    <site>
      <id>apache.website</id>
      <url>${helix.siteUrlDeployment}</url>
    </site>
  </distributionManagement>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.14</version>
      </dependency>
      <dependency>
        <groupId>org.restlet.jse</groupId>
        <artifactId>org.restlet</artifactId>
        <version>2.3.12</version>
      </dependency>
      <dependency>
        <groupId>org.restlet.jse</groupId>
        <artifactId>org.restlet.ext.jetty</artifactId>
        <version>2.3.12</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-server</artifactId>
        <version>8.1.8.v20121106</version>
      </dependency>
      <dependency>
        <groupId>org.apache.helix</groupId>
        <artifactId>helix-core</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.helix</groupId>
        <artifactId>helix-core</artifactId>
        <type>test-jar</type>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.0.1</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>3.12.4</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <defaultGoal>clean install</defaultGoal>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>2.5.1</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
            <preparationGoals>${helix.release.preparationGoals}</preparationGoals>
            <goals>${helix.release.performGoals}</goals>
            <arguments>${helix.release.arguments}</arguments>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.7</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>appassembler-maven-plugin</artifactId>
          <version>1.1.1</version>
          <configuration>
            <binFileExtensions>
              <unix>.sh</unix>
            </binFileExtensions>
            <!-- Set the target configuration directory to be used in the bin scripts -->
            <configurationDirectory>conf</configurationDirectory>
            <!-- Copy the contents from "/src/main/config" to the target configuration directory in the assembled application -->
            <copyConfigurationDirectory>true</copyConfigurationDirectory>
            <!-- Include the target configuration directory in the beginning of the classpath declaration in the bin scripts -->
            <includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>
            <assembleDirectory>${project.build.directory}/${project.artifactId}-pkg</assembleDirectory>
            <!-- Extra JVM arguments that will be included in the bin scripts -->
            <extraJvmArguments>-Xms512m -Xmx512m</extraJvmArguments>
            <!-- Generate bin scripts for windows and unix pr default -->
            <platforms>
              <platform>windows</platform>
              <platform>unix</platform>
            </platforms>
          </configuration>
          <executions>
            <execution>
              <phase>package</phase>
              <goals>
                <goal>assemble</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.2.0</version>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.2.1</version>
          <executions>
            <execution>
              <id>attach-sources</id>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-eclipse-plugin</artifactId>
          <version>2.9</version>
          <configuration>
            <downloadSources>true</downloadSources>
            <downloadJavadocs>true</downloadJavadocs>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.2.0</version>
          <executions>
            <execution>
              <goals>
                <goal>test-jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>2.8</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-publish-plugin</artifactId>
          <configuration>
            <tryUpdate>true</tryUpdate>
            <providerImplementations>
              <svn>${svnImpl}</svn>
            </providerImplementations>
            <pubScmUrl>scm:svn:https://svn.apache.org/repos/asf/helix/site-content/</pubScmUrl>
            <content>${helix.siteFilePath}</content>
            <checkoutDirectory>${helix.scmPubCheckoutDirectory}</checkoutDirectory>
            <skipDeletedFiles>${scmSkipDeletedFiles}</skipDeletedFiles>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>com.google.code.maven-scm-provider-svnjava</groupId>
              <artifactId>maven-scm-provider-svnjava</artifactId>
              <version>${maven-scm-provider-svnjava.version}</version>
            </dependency>
            <dependency>
              <groupId>org.tmatesoft.svnkit</groupId>
              <artifactId>svnkit</artifactId>
              <version>${svnkit.version}</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.0.0-M3</version>
        </plugin>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <version>0.13</version>
          <configuration>
            <!-- Exclude files/folders for Apache release -->
            <excludes>
              <exclude>website/**</exclude>
              <exclude>.reviewboardrc</exclude>
              <exclude>.github/**</exclude>
              <exclude>scripts/**</exclude>
            </excludes>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.8.2</version>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>license-maven-plugin</artifactId>
        <version>1.3</version>
      </plugin>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>3.5.0</version>
        <inherited>true</inherited>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-Name>${project.name}</Bundle-Name>
            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
            <Export-Package>${osgi.export}</Export-Package>
            <Import-Package>${osgi.import}</Import-Package>
            <DynamicImport-Package>${osgi.dynamic.import}</DynamicImport-Package>
            <Private-Package>${osgi.private}</Private-Package>
            <Require-Bundle>${osgi.require.bundles}</Require-Bundle>
            <Ignore-Package>${osgi.ignore}</Ignore-Package>
            <Bundle-Activator>${osgi.activator}</Bundle-Activator>
            <Export-Service>${osgi.export.service}</Export-Service>
          </instructions>
          <supportedProjectTypes>
            <supportedProjectType>jar</supportedProjectType>
            <supportedProjectType>war</supportedProjectType>
            <supportedProjectType>bundle</supportedProjectType>
          </supportedProjectTypes>
          <unpackBundle>true</unpackBundle>
        </configuration>
        <executions>
          <execution>
            <id>bundle-manifest</id>
            <phase>process-classes</phase>
            <goals>
              <goal>manifest</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <!--attach source to Maven repository-->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.2.1</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <!--
              Configuration for unit/integration tests section 2 of 3 (plugins) STARTS HERE.
              This is the core piece for being able to manage unit tests and
              integration (='system') tests within Maven by using surefire.
              See also: properties section and profiles section.
        -->
        <configuration>
          <argLine>${argLine} -Xms4096m -Xmx4096m</argLine>
          <suiteXmlFiles>
            <suiteXmlFile>src/test/conf/testng.xml</suiteXmlFile>
          </suiteXmlFiles>
          <excludes>
            <exclude>**/integration/**</exclude>
          </excludes>
        </configuration>
        <executions>
          <execution>
            <id>integration-tests</id>
            <phase>integration-test</phase>
            <goals>
              <goal>test</goal>
            </goals>
            <configuration>
              <skip>${SKIP_INTEGRATION_TESTS}</skip>
              <excludes>
                <exclude>none</exclude>
              </excludes>
              <includes>
                <include>**/integration/**</include>
              </includes>
            </configuration>
          </execution>
        </executions>
        <!--  Configuration for unit/integration tests section 2 of 3 (plugins) ENDS HERE. -->
      </plugin>
      <!-- Code Coverage report generation -->
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.8.6</version>
        <executions>
          <execution>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
            <configuration>
              <!-- Skip this phase if unit tests are skipped -->
              <skip>${maven.test.skip.exec}</skip>
            </configuration>
          </execution>
          <execution>
            <id>generate-code-coverage-report</id>
            <phase>test</phase>
            <goals>
              <goal>report</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changes-plugin</artifactId>
        <version>2.12.1</version>
        <inherited>false</inherited>
        <configuration>
          <githubAPIScheme>https</githubAPIScheme>
          <githubAPIPort>443</githubAPIPort>
          <includeOpenIssues>false</includeOpenIssues>
          <onlyCurrentVersion>false</onlyCurrentVersion>
          <onlyMilestoneIssues>false</onlyMilestoneIssues>
          <columnNames>Type,Key,Summary,Assignee,Status,Fix Version</columnNames>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>github-report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
          <aggregate>true</aggregate>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>3.0.0</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.9</version>
        <inherited>false</inherited>
        <reportSets>
          <reportSet>
            <inherited>false</inherited>
            <reports>
              <report>aggregate</report>
            </reports>
          </reportSet>
        </reportSets>
        <configuration>
          <docletArtifact>
            <groupId>com.google.doclava</groupId>
            <artifactId>doclava</artifactId>
            <version>1.0.5</version>
          </docletArtifact>
          <doclet>com.google.doclava.Doclava</doclet>
          <!--
            | bootclasspath required by Sun's JVM
          -->
          <bootclasspath>${sun.boot.class.path}</bootclasspath>
          <additionalparam>
            -quiet
            -federate JDK http://download.oracle.com/javase/6/docs/api/index.html?
            -federationxml JDK http://doclava.googlecode.com/svn/static/api/openjdk-6.xml
            -hdf project.name "${project.name}"
            -d ${project.build.directory}/site/apidocs
          </additionalparam>
          <useStandardDocletOptions>false</useStandardDocletOptions>
          <!--
            | Apple's JVM sometimes requires more memory
          -->
          <additionalJOption>-J-Xmx1024m</additionalJOption>
          <notimestamp>true</notimestamp>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>3.0.0</version>
        <inherited>false</inherited>
        <reportSets>
          <reportSet>
            <reports>
              <report>checkstyle-aggregate</report>
            </reports>
          </reportSet>
        </reportSets>
        <!-- disabled currently -->
        <!--configuration>
          <configLocation>file:///${project.parent.basedir}/li_checkstyle.xml</configLocation>
          <failOnError>true</failOnError>
          <violationSeverity>error</violationSeverity>
        </configuration-->
      </plugin>
      <plugin>
        <groupId>org.codehaus.sonar-plugins</groupId>
        <artifactId>maven-report</artifactId>
        <version>0.1</version>
      </plugin>
    </plugins>
  </reporting>

  <profiles>
    <profile>
      <id>rat</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <executions>
              <execution>
                <id>rat-verify</id>
                <phase>test</phase>
                <goals>
                  <goal>rat</goal>
                  <goal>check</goal>
                </goals>
                <configuration>
                  <excludes>
                    <exclude>.gitignore</exclude>
                    <exclude>.git/**</exclude>
                    <exclude>.github/**</exclude>
                    <exclude>*.sh</exclude>
                    <exclude>.git/**</exclude>
                    <exclude>.idea/**</exclude>
                    <exclude>*.bat</exclude>
                    <exclude>**/*.iml</exclude>
                    <exclude>**/*.project</exclude>
                    <exclude>**/*.classpath</exclude>
                    <exclude>**/*.json</exclude>
                    <exclude>.repository/**</exclude>
                    <exclude>test-output/**</exclude>
                    <exclude>src/test/resources/static_view.txt</exclude>
                    <exclude>src/main/scripts/integration-test/script/.metadata_infra</exclude>
                    <exclude>helix-dev-release/**</exclude>
                    <exclude>helix-front/**</exclude>
                    <exclude>website/**</exclude>
                    <exclude>DEPENDENCIES</exclude>
                  </excludes>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!--
    Configuration for unit/integration tests section 3 of 3 (profiles) STARTS HERE.
    Use the following profile to run Integration tests. From the command line:
    mvn clean install -P integration-test
    or:
    mvn integration-test -P integration-test
    * Note that if you do: 'mvn test -P integration-test'
    integration tests will not run, because the test phase is before the
    integration phase in the default maven lifecycle.
    * Also note that unit tests will also be run when integration tests are
    run, because the integration-test phase is always after the test phase
    in the default Maven lifecycle.
    See also: surefire plugin section and properties section.
    -->
    <profile>
      <id>integration-test</id>
      <properties>
        <SKIP_INTEGRATION_TESTS>false</SKIP_INTEGRATION_TESTS>
      </properties>
    </profile>
    <!-- Configuration for unit/integration tests section 3 of 3 (profiles) ENDS HERE.-->
  </profiles>
</project>
