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

  <groupId>org.apache.helix</groupId>
  <artifactId>helix</artifactId>
  <version>0.9.3</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>helix-core</module>
    <module>helix-admin-webapp</module>
    <module>helix-rest</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>
  </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>
  </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>helix-0.9.3</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.2.1</version>
      </dependency>
      <dependency>
        <groupId>org.restlet.jse</groupId>
        <artifactId>org.restlet.ext.jetty</artifactId>
        <version>2.2.1</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>
