<?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">
  <parent>
    <groupId>org.apache.helix</groupId>
    <artifactId>helix</artifactId>
    <version>0.9.0.1</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>helix-core</artifactId>
  <packaging>bundle</packaging>

  <name>Apache Helix :: Core</name>

  <properties>
    <osgi.import>
      javax.management*,
      javax.xml.bind*,
      org.I0Itec.zkclient*,
      org.apache.commons.cli*;version="[1.2,2)",
      org.apache.commons.io*;version="[1.4,2)",
      org.apache.commons.math*;version="[2.1,3)",
      org.apache.jute*;resolution:=optional,
      org.apache.zookeeper.server.persistence*;resolution:=optional,
      org.apache.zookeeper.server.util*;resolution:=optional,
      org.apache.zookeeper.txn*;resolution:=optional,
      org.apache.zookeeper*;version="[3.4,4)",
      org.codehaus.jackson*;version="[1.8,2)",
      org.slf4j*;version="[1.6,2)",
      *
    </osgi.import>
    <osgi.ignore>
      org.apache.helix.tools*
    </osgi.ignore>
    <osgi.export>org.apache.helix*;version="${project.version};-noimport:=true</osgi.export>
  </properties>

  <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>
      <exclusions>
        <exclusion>
          <groupId>javax.mail</groupId>
          <artifactId>mail</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.jms</groupId>
          <artifactId>jms</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.sun.jdmk</groupId>
          <artifactId>jmxtools</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.sun.jmx</groupId>
          <artifactId>jmxri</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.zookeeper</groupId>
      <artifactId>zookeeper</artifactId>
      <version>3.4.13</version>
      <exclusions>
        <exclusion>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
     <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-core-asl</artifactId>
      <version>1.8.5</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.8.5</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>1.4</version>
    </dependency>
    <dependency>
      <groupId>commons-cli</groupId>
      <artifactId>commons-cli</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>com.101tec</groupId>
      <artifactId>zkclient</artifactId>
      <version>0.5</version>
    </dependency>
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-all</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-math</artifactId>
      <version>2.1</version>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.6</version>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>15.0</version>
    </dependency>
    <dependency>
      <groupId>org.yaml</groupId>
      <artifactId>snakeyaml</artifactId>
      <version>1.12</version>
    </dependency>
    <dependency>
      <groupId>io.dropwizard.metrics</groupId>
      <artifactId>metrics-core</artifactId>
      <version>3.2.3</version>
    </dependency>
  </dependencies>
  <build>
    <resources>
      <resource>
        <directory>${basedir}/src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
      <resource>
        <directory>${basedir}</directory>
        <includes>
          <include>DISCLAIMER</include>
        </includes>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>appassembler-maven-plugin</artifactId>
        <configuration>
          <extraJvmArguments>-Dlog4j.configuration=file://"$BASEDIR"/conf/log4j.properties</extraJvmArguments>
          <programs>
            <program>
              <mainClass>org.apache.helix.controller.HelixControllerMain</mainClass>
              <name>run-helix-controller</name>
            </program>
            <program>
              <mainClass>org.apache.helix.tools.ClusterSetup</mainClass>
              <name>helix-admin</name>
            </program>
            <program>
              <mainClass>org.apache.helix.tools.commandtools.ZKDumper</mainClass>
              <name>zk-dumper</name>
            </program>
            <program>
              <mainClass>org.apache.helix.tools.commandtools.ZkCopy</mainClass>
              <name>zkcopy</name>
            </program>
            <program>
              <mainClass>org.apache.helix.tools.commandtools.ZKLogFormatter</mainClass>
              <name>zk-log-parser</name>
            </program>
            <program>
              <mainClass>org.apache.helix.tools.commandtools.ZkLogCSVFormatter</mainClass>
              <name>zk-log-csv-formatter</name>
            </program>
            <program>
              <mainClass>org.apache.helix.examples.ExampleProcess</mainClass>
              <name>start-helix-participant</name>
            </program>
            <program>
              <mainClass>org.apache.helix.tools.commandtools.ExampleParticipant</mainClass>
              <name>start-participants</name>
            </program>
            <program>
              <mainClass>org.apache.helix.tools.commandtools.CurrentStateCleanUp</mainClass>
              <name>cleanup-currentstate</name>
            </program>
            <program>
              <mainClass>org.apache.helix.tools.commandtools.LocalZKServer</mainClass>
              <name>start-standalone-zookeeper</name>
            </program>
            <program>
              <mainClass>org.apache.helix.examples.Quickstart</mainClass>
              <name>quickstart</name>
            </program>
            <program>
              <mainClass>org.apache.helix.tools.commandtools.JmxDumper</mainClass>
              <name>JmxDumper</name>
            </program>
            <program>
              <mainClass>org.apache.helix.tools.commandtools.YAMLClusterSetup</mainClass>
              <name>yaml-cluster-setup</name>
            </program>
            <program>
              <mainClass>org.apache.helix.tools.commandtools.IntegrationTestUtil</mainClass>
              <name>test-util</name>
            </program>
            <program>
              <mainClass>org.apache.helix.tools.commandtools.ZkGrep</mainClass>
              <name>zkgrep</name>
            </program>
            <program>
              <mainClass>org.apache.helix.tools.commandtools.TaskAdmin</mainClass>
              <name>task-admin</name>
            </program>
          </programs>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>src/assemble/assembly.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
