<?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.4.2</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>

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

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

  <url>http://helix.apache.org</url>
  <developers>
    <developer>
      <id>jxue</id>
      <name>Junkai Xue</name>
      <email>jxue@apache.org</email>
      <roles>
        <role>PMC Chair</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>kishoreg</id>
      <name>Kishore Gopalakrishna</name>
      <email>kishoreg@apache.org</email>
      <roles>
        <role>PMC Member</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>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>jiajunwang</id>
      <name>Jiajun Wang</name>
      <email>jiajunwang@apache.org</email>
      <roles>
        <role>Committer / PMC Member</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>
    <developer>
      <id>nealsun</id>
      <name>Neal Sun</name>
      <email>nealsun@apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>vivo</id>
      <name>Vivo Xu</name>
      <email>vivo@apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>xyuanlu</id>
      <name>Xiaoyuan Lu</name>
      <email>xyuanlu@apache.org</email>
      <roles>
        <role>Committer</role>
      </roles>
      <timezone>-8</timezone>
    </developer>
    <developer>
      <id>qqu</id>
      <name>Qi (Quincy) Qu</name>
      <email>qqu@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-rest</module>
    <module>helix-lock</module>
    <module>helix-agent</module>
    <module>recipes</module>
    <module>helix-view-aggregator</module>
    <module>meta-client</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>helix-1.4.2</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>
    <revision>1.1.1-SNAPSHOT</revision>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.build.outputTimestamp>1731999495</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>9.4.55.v20240627</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>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-codec</artifactId>
        <version>4.1.68.Final</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <defaultGoal>clean install</defaultGoal>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.10.1</version>
          <configuration>
            <release>11</release>
          </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>3.0.0</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>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.5.0</version>
          <configuration>
            <failOnError>true</failOnError>
          </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>3.5.0</version>
        <configuration>
          <stylesheetfile>javadocstyle.css</stylesheetfile>
          <reportOutputDirectory>site</reportOutputDirectory>
          <destDir>apidocs</destDir>
          <aggregate>true</aggregate>
        </configuration>
        <reportSets>
          <reportSet>
            <id>non-aggregate</id>
            <reports>
              <report>javadoc</report>
            </reports>
          </reportSet>
          <reportSet>
            <id>aggregate</id>
            <reports>
              <report>aggregate</report>
            </reports>
          </reportSet>
        </reportSets>
      </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 and integration tests. Section 3 of 3 (profiles) ENDS HERE.-->
  </profiles>
</project>
