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

    <name>Apache SAMOA</name>
    <description>Apache SAMOA (incubating) is a platform for mining big data streams.</description>
    <url>http://samoa.incubator.apache.org</url>
    <inceptionYear>2013</inceptionYear>
    <packaging>pom</packaging>

    <groupId>org.apache.samoa</groupId>
    <artifactId>samoa</artifactId>
    <version>0.5.0-incubating-SNAPSHOT</version>

    <organization>
        <name>The Apache Software Foundation</name>
        <url>http://www.apache.org</url>
    </organization>

    <scm>
        <url>https://git-wip-us.apache.org/repos/asf/incubator-samoa.git</url>
        <connection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-samoa.git</connection>
        <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-samoa.git</developerConnection>
        <tag>HEAD</tag>
    </scm>

    <profiles>
        <profile>
            <id>local</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <modules>
                <module>samoa-instances</module>
                <module>samoa-api</module>
                <module>samoa-local</module>
                <module>samoa-test</module>
            </modules>
        </profile>
        <profile>
            <id>threads</id>
            <modules>
                <module>samoa-instances</module>
                <module>samoa-api</module>
                <module>samoa-threads</module>
                <module>samoa-test</module>
            </modules>
        </profile>
        <profile>
            <id>storm</id>
            <modules>
                <module>samoa-instances</module>
                <module>samoa-api</module>
                <module>samoa-storm</module>
                <module>samoa-test</module>
            </modules>
        </profile>
        <profile>
            <id>apex</id>
            <modules>
                <module>samoa-instances</module>
                <module>samoa-api</module>
                <module>samoa-apex</module>
                <module>samoa-test</module>
            </modules>
        </profile>
        <profile>
            <id>flink</id>
            <modules>
                <module>samoa-instances</module>
                <module>samoa-api</module>
                <module>samoa-flink</module>
                <module>samoa-test</module>
            </modules>
        </profile>
        <profile>
            <id>samza</id>
            <modules>
                <module>samoa-instances</module>
                <module>samoa-api</module>
                <module>samoa-samza</module>
                <module>samoa-test</module>
            </modules>
        </profile>
        <profile>
            <id>all</id>
            <modules>
                <module>samoa-instances</module>
                <module>samoa-api</module>
                <module>samoa-local</module>
                <module>samoa-threads</module>
                <module>samoa-storm</module>
                <module>samoa-apex</module>
                <module>samoa-flink</module>
                <module>samoa-samza</module>
                <module>samoa-test</module>
            </modules>
        </profile>
    </profiles>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <maven-dependency-plugin.version>2.7</maven-dependency-plugin.version>
        <maven-assembly-plugin.version>2.4</maven-assembly-plugin.version>

        <commons-lang3.version>3.1</commons-lang3.version>
        <guava.version>17.0</guava.version>
        <hadoop.version>2.6.0</hadoop.version>
        <javacliparser.version>0.5.0</javacliparser.version>
        <jcip-annotations.version>1.0</jcip-annotations.version>
        <jmockit.version>1.13</jmockit.version>
        <junit.version>4.10</junit.version>
        <kafka.version>0.10.2.0</kafka.version>
        <kryo.version>2.21</kryo.version>
        <metrics-core.version>2.2.0</metrics-core.version>
        <miniball.version>1.0.3</miniball.version>
        <samza.version>0.7.0</samza.version>
        <flink.version>0.10.1</flink.version>
        <apex.version>3.4.0</apex.version>
        <slf4j-log4j12.version>1.7.2</slf4j-log4j12.version>
        <slf4j-simple.version>1.7.5</slf4j-simple.version>
        <maven-surefire-plugin.version>2.18</maven-surefire-plugin.version>
        <storm.version>0.9.4</storm.version>
        <!-- storm 0.8.2 loads zookeeper classes with hardcoded names from 3.3 version-->
        <zookeeper.storm.version>3.4.6</zookeeper.storm.version>
        <avro.version>1.7.7</avro.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.jmockit</groupId>
            <artifactId>jmockit</artifactId>
            <version>${jmockit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.1</version>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.scm</groupId>
                        <artifactId>maven-scm-provider-gitexe</artifactId>
                        <version>1.9.2</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <tagNameFormat>v@{project.version}</tagNameFormat>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.10.1</version>
                <configuration>
                    <aggregate>true</aggregate>
                    <show>public</show>
                    <nohelp>true</nohelp>
                    <header>Apache SAMOA ${project.version}</header>
                    <footer>Scalable Advanced Massive Online Analysis,
                        ${project.version}</footer>
                    <doctitle>Apache SAMOA API ${project.version}</doctitle>
                    <links>
                        <link>http://samoa.incubator.apache.org/docs/api/</link>
                    </links>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <configLocation>checkstyle/config.xml</configLocation>
                    <encoding>UTF-8</encoding>
                    <consoleOutput>true</consoleOutput>
                    <failOnViolation>true</failOnViolation>
                    <logViolationsToConsole>true</logViolationsToConsole>
                    <includeTestSourceDirectory>true</includeTestSourceDirectory>
                    <includes>**</includes>
                    <resourceIncludes>**</resourceIncludes>
                    <violationSeverity>info</violationSeverity>
                </configuration>
                <executions>
                    <execution>
                        <id>validate</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <!--This plugin's configuration is used to store Eclipse 
                    m2e settings only. It has no influence on the Maven build itself. -->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>
                                            org.codehaus.mojo
                                        </groupId>
                                        <artifactId>
                                            license-maven-plugin
                                        </artifactId>
                                        <versionRange>
                                            [1.5,)
                                        </versionRange>
                                        <goals>
                                            <goal>
                                                update-file-header
                                            </goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.rat</groupId>
                    <artifactId>apache-rat-plugin</artifactId>
                    <version>0.10</version>
                    <configuration>
                        <excludes>
                            <exclude>.git/**/*</exclude>
                            <exclude>**/*.iml</exclude>
                            <exclude>**/README.md</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <parent>
        <groupId>org.apache</groupId>
        <artifactId>apache</artifactId>
        <version>17</version>
    </parent>

</project>
