<?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>13</version>
  </parent>

  <groupId>org.apache.helix</groupId>
  <artifactId>helix</artifactId>
  <version>1.0.1-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>
  </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>mvnrepository.com</id>
      <url>https://mvnrepository.com</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>restlet.org</id>
      <url>http://maven.restlet.org</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>jira</system>
    <url>https://issues.apache.org/jira/browse/HELIX</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>

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

  </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-all</artifactId>
        <version>1.9.5</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>
          <version>2.5.2</version>
          <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>2.3</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>2.9</version>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <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>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-scm-publish-plugin</artifactId>
          <version>1.0-beta-2</version>
          <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>scripts/**</exclude>
            </excludes>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.2</version>
        <dependencies>
          <dependency>
            <groupId>org.apache.maven.doxia</groupId>
            <artifactId>doxia-module-markdown</artifactId>
            <version>1.3</version>
          </dependency>
        </dependencies>
      </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>
      </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>-Xms1024m -Xmx1024m</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>
    </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>
          <columnNames>Type,Fix Version,Key,Summary,Assignee,Status,Created</columnNames>
          <maxEntries>200</maxEntries>
          <onlyCurrentVersion>true</onlyCurrentVersion>
          <resolutionIds>Fixed</resolutionIds>
          <sortColumnNames>Type</sortColumnNames>
          <fixVersionIds>12324012</fixVersionIds>
          <useJql>true</useJql>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>jira-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>*.sh</exclude>
                    <exclude>.git/**</exclude>
                    <exclude>.idea/**</exclude>
                    <exclude>*.bat</exclude>
                    <exclude>**/*.iml</exclude>
                    <exclude>**/*.project</exclude>
                    <exclude>**/*.classpath</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>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>
