<?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>com.twitter</groupId>
  <artifactId>distributedlog</artifactId>
  <packaging>pom</packaging>
  <version>0.4.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.4.0-incubating</tag>
  </scm>
  <issueManagement>
    <system>jira</system>
    <url>https://issues.apache.org/jira/browse/DL</url>
  </issueManagement>
  <mailingLists>
    <mailingList>
      <name>DistributedLog Dev</name>
      <subscribe>dev-subscribe@distributedlog.incubator.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@distributedlog.incubator.apache.org</unsubscribe>
      <post>dev@distributedlog.incubator.apache.org</post>
      <archive>http://www.mail-archive.com/dev%distributedlog.incubator.apache.org</archive>
    </mailingList>
    <mailingList>
      <name>DistributedLog Commits</name>
      <subscribe>commits-subscribe@distributedlog.incubator.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@distributedlog.incubator.apache.org</unsubscribe>
      <post>commits@distributedlog.incubator.apache.org</post>
      <archive>http://www.mail-archive.com/commits%distributedlog.incubator.apache.org</archive>
    </mailingList>
  </mailingLists>
  <developers>
    <developer>
      <name>The Apache DistributedLog Team</name>
      <email>dev@distributedlog.incubator.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-protocol</module>
    <module>distributedlog-core</module>
    <module>distributedlog-client</module>
    <module>distributedlog-service</module>
    <module>distributedlog-benchmark</module>
    <module>distributedlog-tutorials</module>
  </modules>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <zookeeper.version>3.5.1-alpha</zookeeper.version>
    <bookkeeper.version>4.3.5-TWTTR-OSS</bookkeeper.version>
    <birdcage.sha>6.34.0</birdcage.sha>
    <scrooge.version>4.6.0</scrooge.version>
    <scrooge-maven-plugin.version>3.17.0</scrooge-maven-plugin.version>
    <codahale.metrics.version>3.0.1</codahale.metrics.version>
    <jetty.version>8.1.19.v20160209</jetty.version>
  </properties>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.8</version>
        <configuration>
          <groups>
            <group>
              <title>DistributedLog</title>
              <packages>com.twitter.distributedlog.*</packages>
            </group>
          </groups>
        </configuration>
        <executions>
          <execution>
            <id>aggregate</id>
            <goals>
              <goal>aggregate</goal>
            </goals>
            <phase>site</phase>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2.1</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>3.0.3</version>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>2.2.1</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>deploy</phase>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19.1</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>0.7</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>
          </excludes>
        </configuration>
      </plugin>
      <!-- Report jacoco coverage to coveralls.io -->
      <plugin>
        <groupId>org.eluder.coveralls</groupId>
        <artifactId>coveralls-maven-plugin</artifactId>
        <version>4.1.0</version>
      </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>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.7</version>
        <configuration>
          <formats>
            <format>html</format>
            <format>xml</format>
          </formats>
        </configuration>
      </plugin>
    </plugins>
  </reporting>
</project>
