<?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">
    <parent>
        <artifactId>hudi</artifactId>
        <groupId>org.apache.hudi</groupId>
        <version>0.13.1-rc1</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>hudi-timeline-server-bundle</artifactId>
    <packaging>jar</packaging>

    <dependencies>
        <!-- Hoodie -->
        <dependency>
            <groupId>org.apache.hudi</groupId>
            <artifactId>hudi-common</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hudi</groupId>
            <artifactId>hudi-timeline-service</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- Fasterxml -->
        <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>
        </dependency>

        <dependency>
            <groupId>io.javalin</groupId>
            <artifactId>javalin</artifactId>
            <version>${javalin.version}</version>
        </dependency>

        <dependency>
            <groupId>com.beust</groupId>
            <artifactId>jcommander</artifactId>
        </dependency>

        <dependency>
            <groupId>org.rocksdb</groupId>
            <artifactId>rocksdbjni</artifactId>
        </dependency>

        <!-- Hadoop -->
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <!-- Need these exclusions to make sure JavaSparkContext can be setup. https://issues.apache.org/jira/browse/SPARK-1693 -->
            <exclusions>
                <exclusion>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet.jsp</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet.jsp</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>${maven-shade-plugin.version}</version>
            <configuration>
                <createDependencyReducedPom>true</createDependencyReducedPom>
                <filters>
                    <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                            <exclude>META-INF/*.SF</exclude>
                            <exclude>META-INF/*.DSA</exclude>
                            <exclude>META-INF/*.RSA</exclude>
                            <exclude>META-INF/services/javax.*</exclude>
                            <exclude>**/*.proto</exclude>
                            <exclude>hbase-webapps/**</exclude>
                        </excludes>
                    </filter>
                </filters>
                <artifactSet>
                  <includes combine.children="append">
                      <!-- 
                         Include hudi-timeline-server with javalin dependencies. 
                         hadoop deps are to be provided at runtime. see run_server.sh 
                      -->
                      <include>org.apache.hudi:hudi-common</include>
                      <include>org.apache.hudi:hudi-timeline-service</include>
                      <include>org.mortbay.jetty:jetty</include>
                      <include>org.mortbay.jetty:jetty-util</include>
                      <include>io.javalin:javalin</include>
                      <include>org.jetbrains.kotlin:kotlin-stdlib-jdk8</include>
                      <include>org.jetbrains.kotlin:kotlin-stdlib</include>
                      <include>org.jetbrains.kotlin:kotlin-stdlib-common</include>
                      <include>org.jetbrains:annotations</include>
                      <include>org.jetbrains.kotlin:kotlin-stdlib-jdk7</include>
                      <include>org.eclipse.jetty:jetty-server</include>
                      <include>org.eclipse.jetty:jetty-http</include>
                      <include>org.eclipse.jetty:jetty-util</include>
                      <include>org.eclipse.jetty:jetty-io</include>
                      <include>org.eclipse.jetty:jetty-webapp</include>
                      <include>org.eclipse.jetty:jetty-xml</include>
                      <include>org.eclipse.jetty:jetty-servlet</include>
                      <include>org.eclipse.jetty:jetty-security</include>
                      <include>org.eclipse.jetty.websocket:websocket-server</include>
                      <include>org.eclipse.jetty.websocket:websocket-common</include>
                      <include>org.eclipse.jetty.websocket:websocket-api</include>
                      <include>org.eclipse.jetty.websocket:websocket-client</include>
                      <include>org.eclipse.jetty:jetty-client</include>
                      <include>org.eclipse.jetty.websocket:websocket-servlet</include>
                      <include>com.beust:jcommander</include>
                      <include>org.rocksdb:rocksdbjni</include>
                      <include>com.fasterxml.jackson.core:jackson-annotations</include>
                      <include>com.fasterxml.jackson.core:jackson-core</include>
                      <include>com.fasterxml.jackson.core:jackson-databind</include>
                      <include>commons-io:commons-io</include>
                      <include>log4j:log4j</include>
                      <include>org.openjdk.jol:jol-core</include>
                  </includes>
                </artifactSet>
                <relocations combine.children="append">
                    <relocation>
                        <pattern>org.apache.commons.io.</pattern>
                        <shadedPattern>org.apache.hudi.org.apache.commons.io.</shadedPattern>
                    </relocation>
                    <relocation>
                        <pattern>org.openjdk.jol.</pattern>
                        <shadedPattern>org.apache.hudi.org.openjdk.jol.</shadedPattern>
                    </relocation>
                </relocations>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>org.apache.hudi.timeline.service.TimelineService</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
    </build>


    <properties>
        <checkstyle.skip>true</checkstyle.skip>
        <main.basedir>${project.parent.basedir}</main.basedir>
        <skipTests>true</skipTests>
    </properties>


</project>
