<?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.5.0-incubating-SNAPSHOT</version>
  <name>Apache DistributedLog :: Parent</name>
  <description>
    Apache DistributedLog provides a high performance replicated log service.
  </description>
  <url>http://distributedlog.incubator.apache.org</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://git-wip-us.apache.org/repos/asf/incubator-distributedlog.git</connection>
    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-distributedlog.git</developerConnection>
    <url>https://git-wip-us.apache.org/repos/asf?p=incubator-distributedlog.git;a=summary</url>
    <tag>release-0.5.0-incubating</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://distributedlog.incubator.apache.org</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>
  </modules>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <!-- dependencies -->
    <bookkeeper.version>4.3.7-TWTTR-OSS</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>3.2.1</curator.version>
    <finagle.version>6.34.0</finagle.version>
    <freebuilder.version>1.12.3</freebuilder.version>
    <guava.version>20.0</guava.version>
    <jetty.version>8.1.19.v20160209</jetty.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.2.0</lz4.version>
    <mockito.version>1.9.5</mockito.version>
    <scrooge.version>4.6.0</scrooge.version>
    <slf4j.version>1.6.4</slf4j.version>
    <stats-util.version>0.0.58</stats-util.version>
    <zookeeper.version>3.5.1-alpha</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-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</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>
      </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</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>docs/**/*</exclude>
            <exclude>website/**/*</exclude>
            <exclude>.git/**/*</exclude>
            <exclude>.gitignore</exclude>
            <exclude>.idea/**/*</exclude>
            <exclude>dist/**/*</exclude>
            <exclude>**/.svn/**/*</exclude>
            <exclude>ChangeLog</exclude>
            <exclude>**/README.md</exclude>
            <exclude>**/apidocs/*</exclude>
	    <exclude>GROUPS</exclude>
	    <exclude>OWNERS</exclude>
	    <exclude>CONFIG.ini</exclude>
            <exclude>**/**.md</exclude>
            <exclude>scripts/dev/reviewers</exclude>
            <exclude>src/main/resources/DISCLAIMER.bin.txt</exclude>            
            <exclude>**/dependency-reduced-pom.xml</exclude>
            <exclude>**/org/apache/distributedlog/thrift/*</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>
  <repositories>
    <repository>
      <id>bookkeeper-twitter-mvn-repo</id>
      <url>https://raw.github.com/twitter/bookkeeper/mvn-repo/${bookkeeper.version}</url>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
      </snapshots>
    </repository> 
    <repository>
      <id>twitter-repo</id>
      <name>Twitter Maven Repo</name>
      <url>http://maven.twttr.com</url>
    </repository>
  </repositories>
</project>
