<?xml version="1.0"?>
<!--
   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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>17</version>
  </parent>
  <groupId>org.apache.distributedlog</groupId>
  <artifactId>distributedlog</artifactId>
  <packaging>pom</packaging>
  <version>0.6.0-SNAPSHOT</version>
  <name>Apache DistributedLog :: Parent</name>
  <description>
    Apache DistributedLog provides a high performance replicated log service.
  </description>
  <url>http://bookkeeper.apache.org/distributedlog</url>
  <inceptionYear>2016</inceptionYear>
  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <scm>
    <connection>scm:git:https://github.com/apache/distributedlog.git</connection>
    <developerConnection>scm:git:https://github.com/apache/distributedlog.git</developerConnection>
    <url>https://github.com/apache/distributedlog</url>
    <tag>HEAD</tag>
  </scm>
  <issueManagement>
    <system>jira</system>
    <url>https://issues.apache.org/jira/browse/DL</url>
  </issueManagement>
  <mailingLists>
    <mailingList>
      <name>DistributedLog User</name>
      <subscribe>distributedlog-user-subscribe@bookkeeper.apache.org</subscribe>
      <unsubscribe>distributedlog-user-unsubscribe@bookkeeper.apache.org</unsubscribe>
      <post>distributedlog-user@bookkeeper.apache.org</post>
      <archive>http://www.mail-archive.com/distributedlog-user@bookkeeper.apache.org</archive>
    </mailingList>
    <mailingList>
      <name>DistributedLog Dev</name>
      <subscribe>distributedlog-dev-subscribe@bookkeeper.apache.org</subscribe>
      <unsubscribe>distributedlog-dev-unsubscribe@bookkeeper.apache.org</unsubscribe>
      <post>distributedlog-dev@bookkeeper.apache.org</post>
      <archive>http://www.mail-archive.com/distributedlog-dev@bookkeeper.apache.org</archive>
    </mailingList>
    <mailingList>
      <name>DistributedLog Commits</name>
      <subscribe>distributedlog-commits-subscribe@bookkeeper.apache.org</subscribe>
      <unsubscribe>distributedlog-commits-unsubscribe@bookkeeper.apache.org</unsubscribe>
      <post>distributedlog-commits@bookkeeper.apache.org</post>
      <archive>http://www.mail-archive.com/distributedlog-commits@bookkeeper.apache.org</archive>
    </mailingList>
  </mailingLists>
  <developers>
    <developer>
      <name>The Apache DistributedLog Team</name>
      <email>distributedlog-dev@bookkeeper.apache.org</email>
      <url>http://bookkeeper.apache.org/distributedlog</url>
      <organization>Apache Software Foundation</organization>
      <organizationUrl>http://www.apache.org</organizationUrl>
    </developer>
  </developers>
  <modules>
    <module>distributedlog-build-tools</module>
    <module>distributedlog-common</module>
    <module>distributedlog-protocol</module>
    <module>distributedlog-core</module>
    <module>distributedlog-proxy-protocol</module>
    <module>distributedlog-proxy-client</module>
    <module>distributedlog-proxy-server</module>
    <module>distributedlog-benchmark</module>
    <module>distributedlog-tutorials</module>
    <module>distributedlog-core-twitter</module>
    <module>tests</module>
    <module>distributedlog-dist</module>
  </modules>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <!-- dependencies -->
    <bookkeeper.version>4.6.0-SNAPSHOT</bookkeeper.version>
    <codahale.metrics.version>3.0.1</codahale.metrics.version>
    <commons-cli.version>1.1</commons-cli.version>
    <commons-codec.version>1.6</commons-codec.version>
    <commons-lang.version>2.6</commons-lang.version>
    <commons-lang3.version>3.3.2</commons-lang3.version>
    <curator.version>4.0.0</curator.version>
    <finagle.version>6.34.0</finagle.version>
    <freebuilder.version>1.12.3</freebuilder.version>
    <guava.version>20.0</guava.version>
    <jetty.version>9.3.11.v20160721</jetty.version>
    <jmh.version>1.19</jmh.version>
    <jmock.version>2.8.2</jmock.version>
    <junit.version>4.8.1</junit.version>
    <libthrift.version>0.5.0-1</libthrift.version>
    <lombok.version>1.16.16</lombok.version>
    <lz4.version>1.3.0</lz4.version>
    <mockito.version>1.9.5</mockito.version>
    <netty.version>4.1.12.Final</netty.version>
    <scrooge.version>4.6.0</scrooge.version>
    <slf4j.version>1.6.4</slf4j.version>
    <prometheus.version>0.0.21</prometheus.version>
    <stats-util.version>0.0.58</stats-util.version>
    <zookeeper.version>3.5.3-beta</zookeeper.version>
    <!-- plugin dependencies -->
    <apache-rat-plugin.version>0.7</apache-rat-plugin.version>
    <cobertura-maven-plugin.version>2.7</cobertura-maven-plugin.version>
    <coveralls-maven-plugin.version>4.1.0</coveralls-maven-plugin.version>
    <findbugs-maven-plugin.version>3.0.3</findbugs-maven-plugin.version>
    <puppycrawl.checkstyle.version>6.19</puppycrawl.checkstyle.version>
    <maven-assembly-plugin.version>2.2.1</maven-assembly-plugin.version>
    <maven-checkstyle-plugin.version>2.17</maven-checkstyle-plugin.version>
    <maven-compiler-plugin.version>3.1</maven-compiler-plugin.version>
    <maven-deploy-plugin.version>2.7</maven-deploy-plugin.version>
    <maven-jar-plugin.version>2.2</maven-jar-plugin.version>
    <maven-javadoc-plugin.version>2.8</maven-javadoc-plugin.version>
    <maven-shade-plugin.version>2.4.3</maven-shade-plugin.version>
    <maven-source-plugin.version>2.2.1</maven-source-plugin.version>
    <maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version>
    <scrooge-maven-plugin.version>3.17.0</scrooge-maven-plugin.version>
  </properties>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>${maven-javadoc-plugin.version}</version>
        <configuration>
          <!-- Avoid for missing javadoc comments to be marked as errors -->
          <additionalparam>-Xdoclint:none -notimestamp</additionalparam>
          <groups>
            <group>
              <title>Core Library</title>
              <packages>org.apache.distributedlog:org.apache.distributedlog.annotations:org.apache.distributedlog.callback:org.apache.distributedlog.exceptions:org.apache.distributedlog.feature:org.apache.distributedlog.io:org.apache.distributedlog.lock:org.apache.distributedlog.logsegment:org.apache.distributedlog.metadata:org.apache.distributedlog.namespace:org.apache.distributedlog.net:org.apache.distributedlog.stats:org.apache.distributedlog.api.subscription</packages>
            </group>
            <group>
              <title>Proxy Client</title>
              <packages>org.apache.distributedlog.client*:org.apache.distributedlog.service*</packages>
            </group>
          </groups>
          <excludePackageNames>
            org.apache.distributedlog.acl:org.apache.distributedlog.admin:org.apache.distributedlog.auditor:org.apache.distributedlog.basic:org.apache.distributedlog.benchmark*:org.apache.distributedlog.bk:org.apache.distributedlog.ownership:org.apache.distributedlog.proxy:org.apache.distributedlog.resolver:org.apache.distributedlog.service.*:org.apache.distributedlog.config:org.apache.distributedlog.function:org.apache.distributedlog.impl*:org.apache.distributedlog.injector:org.apache.distributedlog.kafka:org.apache.distributedlog.limiter:org.apache.distributedlog.mapreduce:org.apache.distributedlog.messaging:org.apache.distributedlog.common.rate:org.apache.distributedlog.readahead:org.apache.distributedlog.selector:org.apache.distributedlog.stats:org.apache.distributedlog.thrift*:org.apache.distributedlog.tools:org.apache.distributedlog.util:org.apache.distributedlog.zk:org.apache.bookkeeper.client:org.apache.bookkeeper.stats
          </excludePackageNames>
        </configuration>
        <executions>
          <execution>
            <id>aggregate</id>
            <goals>
              <goal>aggregate</goal>
            </goals>
            <phase>site</phase>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>${maven-assembly-plugin.version}</version>
        <configuration>
          <tarLongFileMode>gnu</tarLongFileMode>
          <descriptors>
            <descriptor>src/assemble/src.xml</descriptor>
          </descriptors>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>${findbugs-maven-plugin.version}</version>
        <configuration>
          <excludeFilterFile>${session.executionRootDirectory}/distributedlog-build-tools/src/main/resources/distributedlog/findbugsExclude.xml</excludeFilterFile>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven-compiler-plugin.version}</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>${maven-source-plugin.version}</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${maven-surefire-plugin.version}</version>
        <configuration>
          <redirectTestOutputToFile>true</redirectTestOutputToFile>
          <argLine>-Xmx3G -Djava.net.preferIPv4Stack=true -XX:MaxDirectMemorySize=2G -Dio.netty.leakDetection.level=PARANOID</argLine>
          <forkMode>always</forkMode>
          <forkedProcessTimeoutInSeconds>1800</forkedProcessTimeoutInSeconds>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <version>${apache-rat-plugin.version}</version>
        <configuration>
          <excludes>
            <exclude>ChangeLog</exclude>
            <exclude>CONFIG.ini</exclude>
            <exclude>GROUPS</exclude>
            <exclude>OWNERS</exclude>
            <exclude>dist/**/*</exclude>
            <exclude>docs/**/*</exclude>
            <exclude>scripts/dev/reviewers</exclude>
            <exclude>website/**/*</exclude>
            <exclude>**/*.md</exclude>
            <exclude>**/apidocs/*</exclude>
            <exclude>**/dependency-reduced-pom.xml</exclude>
            <exclude>**/org/apache/distributedlog/thrift/*</exclude>
            <exclude>**/logs/*.log</exclude>
            <!-- Git -->
            <exclude>.git/**/*</exclude>
            <exclude>.github/**/*</exclude>
            <exclude>.gitignore</exclude>
            <exclude>docker/.gitignore</exclude>
            <exclude>.idea/**/*</exclude>
            <!-- Intellij -->
            <exclude>**/*.iml</exclude>
            <exclude>**/*.iws</exclude>
            <exclude>**/*.ipr</exclude>
            <!-- SVN -->
            <exclude>**/.svn/**/*</exclude>
            <!-- Maven -->
            <exclude>.repository/**</exclude>
            <!-- Grafana -->
            <exclude>docker/grafana/dashboards/*.json</exclude>
          </excludes>
        </configuration>
      </plugin>
      <!-- Report jacoco coverage to coveralls.io -->
      <plugin>
        <groupId>org.eluder.coveralls</groupId>
        <artifactId>coveralls-maven-plugin</artifactId>
        <version>${coveralls-maven-plugin.version}</version>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>${cobertura-maven-plugin.version}</version>
        <configuration>
          <formats>
            <format>html</format>
            <format>xml</format>
          </formats>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
