<?xml version="1.0" encoding="UTF-8"?>

<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>
        <groupId>com.bazaarvoice.emodb</groupId>
        <artifactId>emodb-parent</artifactId>
        <version>6.5.99</version>
        <relativePath>../parent/pom.xml</relativePath>
    </parent>

    <artifactId>emodb-web</artifactId>
    <packaging>jar</packaging>

    <name>EmoDB RESTful Web Server</name>

    <properties>
        <docker-maven-plugin.version>0.40.3</docker-maven-plugin.version>
        <docker.build.dockerFile>Dockerfile</docker.build.dockerFile>
        <docker.build.skipRun>true</docker.build.skipRun>
        <docker.floating.tag>${project.version}</docker.floating.tag>
        <docker.image.name>bazaarvoice/emodb-web</docker.image.name>
    </properties>

    <dependencies>
        <!-- Bazaarvoice dependencies -->
        <dependency>
            <groupId>com.bazaarvoice.astyanax</groupId>
            <artifactId>astyanax-core</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>joda-time</groupId>
                    <artifactId>joda-time</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.curator</groupId>
            <artifactId>dropwizard</artifactId>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.curator</groupId>
            <artifactId>recipes</artifactId>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-auth-client</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-auth-core</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-auth-util</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-auth-store</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-blob</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-blob-api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-blob-client</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-blob-client-common</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-cachemgr</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-common-api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-common-astyanax</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-common-client</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-common-dropwizard</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-common-stash</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-common-jersey-client</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-common-json</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-common-uuid</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-common-zookeeper</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-databus</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-databus-api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-databus-client</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-databus-client-common</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-datacenter</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-event</artifactId>
            <version>${project.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-all</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-job</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-job-api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-kafka</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-megabus</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-queue</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-queue-api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-queue-client</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-queue-client-common</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-sor</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-sor-api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-sor-client</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-sor-client-common</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-table</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-uac-api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-uac-client</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.emodb</groupId>
            <artifactId>emodb-plugins</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.ostrich</groupId>
            <artifactId>ostrich-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.ostrich.zookeeper</groupId>
            <artifactId>ostrich-zookeeper-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.ostrich</groupId>
            <artifactId>ostrich-dropwizard</artifactId>
        </dependency>
        <dependency>
            <groupId>com.bazaarvoice.ostrich.zookeeper</groupId>
            <artifactId>ostrich-zookeeper-registry</artifactId>
        </dependency>

        <!-- 3rd-party dependencies -->
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-core</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>joda-time</groupId>
                    <artifactId>joda-time</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-s3</artifactId>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-cloudwatch</artifactId>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-sns</artifactId>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-sqs</artifactId>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-sts</artifactId>
        </dependency>
        <dependency>
            <groupId>com.codahale.metrics</groupId>
            <artifactId>metrics-annotation</artifactId>
        </dependency>
        <dependency>
            <groupId>com.codahale.metrics</groupId>
            <artifactId>metrics-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.codahale.metrics</groupId>
            <artifactId>metrics-healthchecks</artifactId>
        </dependency>
        <dependency>
            <groupId>com.codahale.metrics</groupId>
            <artifactId>metrics-servlets</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.databind.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>jackson-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>jackson-annotations</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-yaml</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>jsr305</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.inject</groupId>
            <artifactId>guice</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.inject.extensions</groupId>
            <artifactId>guice-assistedinject</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey.contribs</groupId>
            <artifactId>jersey-apache-client4</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
        </dependency>
        <dependency>
            <groupId>io.dropwizard</groupId>
            <artifactId>dropwizard-client</artifactId>
        </dependency>
        <dependency>
            <groupId>io.dropwizard</groupId>
            <artifactId>dropwizard-core</artifactId>
        </dependency>
        <dependency>
            <groupId>io.dropwizard</groupId>
            <artifactId>dropwizard-configuration</artifactId>
        </dependency>
        <dependency>
            <groupId>io.dropwizard</groupId>
            <artifactId>dropwizard-jackson</artifactId>
        </dependency>
        <dependency>
            <groupId>io.dropwizard</groupId>
            <artifactId>dropwizard-jersey</artifactId>
        </dependency>
        <dependency>
            <groupId>io.dropwizard</groupId>
            <artifactId>dropwizard-jetty</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-server</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.dropwizard</groupId>
            <artifactId>dropwizard-lifecycle</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-server</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.dropwizard</groupId>
            <artifactId>dropwizard-metrics</artifactId>
        </dependency>
        <dependency>
            <groupId>io.dropwizard</groupId>
            <artifactId>dropwizard-servlets</artifactId>
        </dependency>
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
        </dependency>
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-jaxrs</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>jsr311-api</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
        </dependency>
        <dependency>
            <groupId>net.sourceforge.argparse4j</groupId>
            <artifactId>argparse4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.cassandra</groupId>
            <artifactId>cassandra-all</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>joda-time</groupId>
                    <artifactId>joda-time</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.cassandra</groupId>
            <artifactId>cassandra-thrift</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-compress</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.thrift</groupId>
            <artifactId>libthrift</artifactId>
        </dependency>
        <dependency>
            <groupId>org.coursera</groupId>
            <artifactId>metrics-datadog</artifactId>
        </dependency>
        <dependency>
            <groupId>org.coursera</groupId>
            <artifactId>dropwizard-metrics-datadog</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.orbit</groupId>
            <artifactId>javax.servlet</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-io</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-security</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-server</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-servlet</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-util</artifactId>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jul-to-slf4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>log4j-over-slf4j</artifactId>
        </dependency>

        <dependency>
            <groupId>org.xerial.snappy</groupId>
            <artifactId>snappy-java</artifactId>
        </dependency>

        <!-- Test dependencies -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <configuration>
                    <createDependencyReducedPom>true</createDependencyReducedPom>
                    <filters>
                        <filter>
                            <artifact>*:*</artifact>
                            <excludes>
                                <exclude>META-INF/*.SF</exclude>
                                <exclude>META-INF/*.DSA</exclude>
                                <exclude>META-INF/*.RSA</exclude>
                            </excludes>
                        </filter>
                    </filters>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <createDependencyReducedPom>false</createDependencyReducedPom>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.bazaarvoice.emodb.web.EmoService</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>rpm</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>rpm-maven-plugin</artifactId>
                        <version>2.2.0</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>attached-rpm</goal>
                                </goals>
                                <configuration>
                                    <group>com.bazaarvoice.emodb</group>
                                    <name>${yumArtifactId}</name>
                                </configuration>
                            </execution>
                        </executions>
                        <configuration>
                            <group>BV/EmoDB</group>
                            <license>Other/Proprietary</license>
                            <defaultDirmode>755</defaultDirmode>
                            <defaultFilemode>644</defaultFilemode>
                            <defaultUsername>root</defaultUsername>
                            <defaultGroupname>root</defaultGroupname>
                            <mappings>
                                <mapping>
                                    <directory>/opt/bazaarvoice/emodb</directory>
                                    <sources>
                                        <source>
                                            <location>${project.build.directory}/${project.artifactId}-${project.version}.jar</location>
                                        </source>
                                        <!-- Create a symbolic link without the version number for use by supervisord. -->
                                        <softlinkSource>
                                            <location>${project.artifactId}-${project.version}.jar</location>
                                            <destination>emodb-web.jar</destination>
                                        </softlinkSource>
                                    </sources>
                                </mapping>
                            </mappings>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>docker</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <version>${docker-maven-plugin.version}</version>
                        <configuration>
                            <images>
                                <image>
                                    <name>${docker.image.name}</name>
                                    <alias>${project.artifactId}</alias>
                                    <build>
                                        <args>
                                            <version>${project.version}</version>
                                        </args>
                                        <dockerFileDir>${project.basedir}/../docker</dockerFileDir>
                                        <tags>
                                            <tag>${docker.floating.tag}</tag>
                                        </tags>
                                        <assembly>
                                            <descriptorRef>artifact</descriptorRef>
                                        </assembly>
                                    </build>
                                    <run>
                                        <skip>${docker.build.skipRun}</skip>
                                    </run>
                                </image>
                            </images>
                        </configuration>
                        <executions>
                            <execution>
                                <id>start</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>build</goal>
                                    <goal>start</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>stop</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>stop</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>build</id>
                                <phase>install</phase>
                                <goals>
                                    <goal>build</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>image-push</id>
                                <phase>install</phase>
                                <goals>
                                    <goal>push</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
