<?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>SAMOA</name>
    <description>Scalable Advanced Massive Online Analysis</description>
    <url>http://github.com/yahoo/samoa</url>
    <modules>
        <module>samoa-test</module>
    </modules>
    <packaging>pom</packaging>

    <groupId>com.yahoo.labs.samoa</groupId>
    <artifactId>samoa</artifactId>
    <version>0.3.0-SNAPSHOT</version>

    <organization>
        <name>Yahoo Labs</name>
        <url>http://labs.yahoo.com</url>
    </organization>

    <scm>
        <connection>scm:git:git@github.com:yahoo/samoa.git</connection>
        <url>scm:git:git@github.com:yahoo/samoa.git</url>
        <developerConnection>scm:git:git@github.com:yahoo/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>s4</id>
            <modules>
                <module>samoa-instances</module>
                <module>samoa-api</module>
                <module>samoa-s4</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-s4</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.2.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.17</kryo.version>
        <metrics-core.version>2.2.0</metrics-core.version>
        <miniball.version>1.0.3</miniball.version>
        <s4.version>0.6.0-incubating</s4.version>
        <samza.version>0.7.0</samza.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.8.2</storm.version>
        <!-- storm 0.8.2 loads zookeeper classes with hardcoded names from 3.3 version-->
        <zookeeper.storm.version>3.3.6</zookeeper.storm.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.1</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.9.1</version>
                <configuration>
                    <aggregate>true</aggregate>
                    <show>public</show>
                    <nohelp>true</nohelp>
                    <header>SAMOA ${project.version}</header>
                    <footer>Scalable Advanced Massive Online Analysis,
                        ${project.version}</footer>
                    <doctitle>SAMOA API ${project.version}</doctitle>
                    <links>
                        <link>http://samoa-project.net/docs/api/</link>
                    </links>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>license-maven-plugin</artifactId>
                <version>1.5</version>
                <configuration>
                    <licenseName>apache_v2</licenseName>
                    <inceptionYear>2013</inceptionYear>
                    <organizationName>Yahoo! Inc.</organizationName>
                    <projectName>SAMOA</projectName>
                    <roots>
                        <root>samoa-api</root>
                        <root>samoa-instances</root>
                        <root>samoa-local</root>
                        <root>samoa-storm</root>
                        <root>samoa-s4</root>
                        <root>samoa-samza</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.sonatype.oss</groupId>
        <artifactId>oss-parent</artifactId>
        <version>7</version>
    </parent>
</project>
