<?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.9.0-SNAPSHOT</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>org.xerial.snappy</groupId>
      <artifactId>snappy-java</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-engine</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.dropwizard.metrics</groupId>
      <artifactId>metrics-core</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>