<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
  <!--
  /**
   * 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.
   */
  -->
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>parent</artifactId>
    <version>3.5.8</version>
  </parent>

  <artifactId>zookeeper-recipes</artifactId>
  <packaging>pom</packaging>
  <name>Apache ZooKeeper - Recipes</name>
  <description>
    1) This module contains various Zookeeper recipe implementations.

    2) The recipe directory name should specify the name of the recipe you are implementing - eg. zookeeper-recipes-lock.

    3) It would be great if you can provide both the java and c recipes for the zookeeper recipes.
    C recipes go in to zookeeper-recipes/zookeeper-recipes-[recipe-name]/src/c
    Java implementation goes into zookeeper-recipes/zookeeper-recipes-[recipe-name]/src/java.

    4) The recipes hold high standards like our zookeeper c/java libraries, so make sure that you include
    some unit testing with both the c and java recipe code.

    5) Also, please name your c client public methods as
    zkr_recipe-name_methodname
    (eg. zkr_lock_lock in zookeeper-recipes-lock/src/c)

    6) To run the c tests in all the recipes,
    - make sure the main zookeeper c libraries in
    zookeeper-client-c are compiled. Run autoreconf -if;./configure; make. The libraries
    will be installed in {top}/src/c/.libs.
    - run autoreconf if;./configure;make run-check
    in zookeeper-recipes/$recipename/src/c

  </description>

  <modules>
    <module>zookeeper-recipes-election</module>
    <module>zookeeper-recipes-lock</module>
    <module>zookeeper-recipes-queue</module>
  </modules>

  <dependencies>
    <dependency>
      <groupId>org.apache.zookeeper</groupId>
      <artifactId>zookeeper</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.zookeeper</groupId>
      <artifactId>zookeeper</artifactId>
      <version>${project.version}</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.github.spotbugs</groupId>
      <artifactId>spotbugs-annotations</artifactId>
      <scope>provided</scope>
      <optional>true</optional>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
       <artifactId>maven-deploy-plugin</artifactId>
       <configuration>
         <!-- this module isn't to be deployed to Maven Central -->
         <skip>true</skip>
       </configuration>
      </plugin>
    </plugins>
  </build>

</project>
