<?xml version="1.0" encoding="UTF-8"?>
<!--
  #%L
  SAMOA
  %%
  Copyright (C) 2014 - 2015 Apache Software Foundation
  %%
  Licensed 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.
  #L%
  -->

<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.4.0-incubating</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>v0.4.0-incubating</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>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-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.8.1</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>
        <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.codehaus.mojo</groupId>
                <artifactId>license-maven-plugin</artifactId>
                <version>1.8</version>
                <configuration>
                    <licenseName>apache_v2</licenseName>
                    <inceptionYear>2014</inceptionYear>
                    <organizationName>Apache Software Foundation</organizationName>
                    <projectName>SAMOA</projectName>
                    <roots>
                        <root>samoa-api</root>
                        <root>samoa-instances</root>
                        <root>samoa-local</root>
                        <root>samoa-storm</root>
                        <root>samoa-flink</root>
                        <root>samoa-samza</root>
                        <root>samoa-test</root>
                        <root>samoa-threads</root>
                        <root>bin</root>
                    </roots>
                    <excludes>
                        <exclude>**/target/**</exclude>
                    </excludes>
                </configuration>
                <executions>
                    <execution>
                        <id>first</id>
                        <goals>
                            <goal>update-file-header</goal>
                        </goals>
                        <phase>process-sources</phase>
                    </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>
