<?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>
    <parent>
        <artifactId>storm</artifactId>
        <groupId>org.apache.storm</groupId>
        <version>0.9.3-rc2-SNAPSHOT</version>
    </parent>
    <groupId>org.apache.storm</groupId>
    <artifactId>storm-core</artifactId>
    <packaging>jar</packaging>
    <name>Storm Core</name>
    <description>Storm Core Java API and Clojure implementation.</description>

    <dependencies>
        <!--clojure-->
        <dependency>
            <groupId>org.clojure</groupId>
            <artifactId>clojure</artifactId>
        </dependency>
        <dependency>
            <groupId>clj-time</groupId>
            <artifactId>clj-time</artifactId>
        </dependency>
        <dependency>
            <groupId>compojure</groupId>
            <artifactId>compojure</artifactId>
        </dependency>
        <dependency>
            <groupId>hiccup</groupId>
            <artifactId>hiccup</artifactId>
        </dependency>
        <dependency>
            <groupId>ring</groupId>
            <artifactId>ring-devel</artifactId>
        </dependency>
        <dependency>
            <groupId>ring</groupId>
            <artifactId>ring-jetty-adapter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.clojure</groupId>
            <artifactId>tools.logging</artifactId>
        </dependency>
        <dependency>
            <groupId>org.clojure</groupId>
            <artifactId>math.numeric-tower</artifactId>
        </dependency>
        <dependency>
            <groupId>org.clojure</groupId>
            <artifactId>tools.cli</artifactId>
        </dependency>
        <dependency>
            <groupId>org.clojure</groupId>
            <artifactId>tools.nrepl</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>clojure-complete</groupId>
            <artifactId>clojure-complete</artifactId>
            <scope>test</scope>
        </dependency>

        <!--java-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-exec</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.thrift</groupId>
            <artifactId>libthrift</artifactId>
            <version>0.7.0</version>
            <scope>compile</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>


        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
        </dependency>


        <dependency>
            <groupId>com.twitter</groupId>
            <artifactId>carbonite</artifactId>
        </dependency>
        <dependency>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>

        <dependency>
            <groupId>com.lmax</groupId>
            <artifactId>disruptor</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jgrapht</groupId>
            <artifactId>jgrapht-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>log4j-over-slf4j</artifactId>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.clojars.runa</groupId>
            <artifactId>conjure</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
        	<groupId>junit</groupId>
        	<artifactId>junit</artifactId>
        	<version>4.1</version>
        	<scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <sourceDirectory>src/jvm</sourceDirectory>
         <testSourceDirectory>test/jvm</testSourceDirectory>
        <resources>
            <resource>
                <directory>../conf</directory>
            </resource>
            <resource>
                <directory>../</directory>
                <targetPath>META-INF</targetPath>
                <includes>
                    <!--
                    storm-core doesn't package jquery, etc. so the stock
                    apache LICENSE file is okay. We do want our version
                    of the NOTICE file, however
                    -->
                    <include>NOTICE</include>
                </includes>
            </resource>

        </resources>
        <testResources>
            <testResource>
                <directory>src/dev</directory>
            </testResource>
            <testResource>
                <directory>test/resources</directory>
            </testResource>
        </testResources>
        <plugins>
            <plugin>
                <groupId>com.theoryinpractise</groupId>
                <artifactId>clojure-maven-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <sourceDirectories>
                        <sourceDirectory>src/clj</sourceDirectory>
                    </sourceDirectories>
                    <testSourceDirectories>
                        <testSourceDirectory>test/clj</testSourceDirectory>
                    </testSourceDirectories>
                    <warnOnReflection>false</warnOnReflection>
                    <copyDeclaredNamespaceOnly>true</copyDeclaredNamespaceOnly>
                    <copiedNamespaces>
                        <copiedNamespace>none</copiedNamespace>
                    </copiedNamespaces>
                </configuration>
                <executions>
                    <execution>
                        <id>compile-clojure</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>test-clojure</id>
                        <phase>test</phase>
                        <goals>
                            <goal>test-with-junit</goal>
                        </goals>
                        <configuration>
                            <vmargs>${test.extra.args}</vmargs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <configuration>
                    <reportsDirectories>
                        <file>${project.build.directory}/test-reports</file>
                    </reportsDirectories>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.2</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <keepDependenciesWithProvidedScope>false</keepDependenciesWithProvidedScope>
                    <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
                    <createDependencyReducedPom>true</createDependencyReducedPom>
                    <minimizeJar>false</minimizeJar>
                    <artifactSet>
                        <includes>
                            <include>org.apache.thrift:*</include>
                            <include>io.netty:netty</include>
                            <include>com.google.guava:guava</include>
                            <include>org.apache.httpcomponents:http*</include>
                            <include>org.apache.zookeeper:zookeeper</include>
                            <include>org.apache.curator:*</include>
                        </includes>
                    </artifactSet>

                    <relocations>
                        <relocation>
                            <pattern>org.apache.thrift</pattern>
                            <shadedPattern>org.apache.thrift7</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.jboss.netty</pattern>
                            <shadedPattern>org.apache.storm.netty</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>com.google.common</pattern>
                            <shadedPattern>org.apache.storm.guava</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>com.google.thirdparty</pattern>
                            <shadedPattern>org.apache.storm.guava.thirdparty</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.apache.http</pattern>
                            <shadedPattern>org.apache.storm.http</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.apache.zookeeper</pattern>
                            <shadedPattern>org.apache.storm.zookeeper</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.apache.curator</pattern>
                            <shadedPattern>org.apache.storm.curator</shadedPattern>
                        </relocation>
                    </relocations>
                    <transformers>
                        <transformer implementation="org.apache.storm.maven.shade.clojure.ClojureTransformer" />
                    </transformers>
                    <filters>
                        <filter>
                            <artifact>org.apache.thrift:*</artifact>
                            <excludes>
                                <exclude>META-INF/LICENSE.txt</exclude>
                                <exclude>META-INF/NOTICE.txt</exclude>
                            </excludes>
                        </filter>
                        <filter>
                            <artifact>io.netty:netty</artifact>
                            <excludes>
                                <exclude>META-INF/LICENSE.txt</exclude>
                                <exclude>META-INF/NOTICE.txt</exclude>
                            </excludes>
                        </filter>
                        <filter>
                            <artifact>commons-httpclient:commons-httpclient</artifact>
                            <excludes>
                                <exclude>META-INF/LICENSE.txt</exclude>
                                <exclude>META-INF/NOTICE.txt</exclude>
                                <exclude>META-INF/README.txt</exclude>
                            </excludes>
                        </filter>
                        <filter>
                            <artifact>org.apache.zookeeper:zookeeper</artifact>
                            <excludes>
                                <exclude>LICENSE.txt</exclude>
                            </excludes>
                        </filter>
                    </filters>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.storm</groupId>
                        <artifactId>maven-shade-clojure-transformer</artifactId>
                        <version>${project.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

        </plugins>
    </build>
</project>
