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

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

  <groupId>org.apache.helix</groupId>
  <artifactId>helix</artifactId>
  <version>1.0.5-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>
    <module>helix-view-aggregator</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>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://gitbox.apache.org/repos/asf/helix.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/helix.git</developerConnection>
    <url>https://gitbox.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>1652326060</project.build.outputTimestamp>

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

    <!-- fix issue with current apache parent pom -->
    <arguments />

    <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>scm:svn:https://svn.apache.org/repos/asf/helix/site-content/</url>
    </site>
  </distributionManagement>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.32</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.17.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.17.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.17.1</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 -->
            <!-- -D flag is a failsafe to address https://nvd.nist.gov/vuln/detail/CVE-2021-44228 -->
            <extraJvmArguments>-Xms512m -Xmx512m -Dlog4j2.formatMsgNoLookups=true</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.2</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-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.11.0</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>5.1.4</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>
