<?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>zeppelin</artifactId>
    <groupId>org.apache.zeppelin</groupId>
    <version>0.6.2</version>
    <relativePath>..</relativePath>
  </parent>

  <groupId>org.apache.zeppelin</groupId>
  <artifactId>zeppelin-flink_2.10</artifactId>
  <packaging>jar</packaging>
  <version>0.6.2</version>
  <name>Zeppelin: Flink</name>
  <description>Zeppelin flink support</description>

  <properties>
    <flink.version>1.1.2</flink.version>
    <flink.akka.version>2.3.7</flink.akka.version>
    <scala.macros.version>2.0.1</scala.macros.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>zeppelin-interpreter</artifactId>
      <version>${project.version}</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-core</artifactId>
      <version>${flink.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-clients_${scala.binary.version}</artifactId>
      <version>${flink.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-runtime_${scala.binary.version}</artifactId>
      <version>${flink.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-scala_${scala.binary.version}</artifactId>
      <version>${flink.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-scala-shell_${scala.binary.version}</artifactId>
      <version>${flink.version}</version>
    </dependency>

    <dependency>
      <groupId>com.typesafe.akka</groupId>
      <artifactId>akka-actor_${scala.binary.version}</artifactId>
      <version>${flink.akka.version}</version>
    </dependency>

    <dependency>
      <groupId>com.typesafe.akka</groupId>
      <artifactId>akka-remote_${scala.binary.version}</artifactId>
      <version>${flink.akka.version}</version>
    </dependency>

    <dependency>
      <groupId>com.typesafe.akka</groupId>
      <artifactId>akka-slf4j_${scala.binary.version}</artifactId>
      <version>${flink.akka.version}</version>
    </dependency>

    <dependency>
      <groupId>com.typesafe.akka</groupId>
      <artifactId>akka-testkit_${scala.binary.version}</artifactId>
      <version>${flink.akka.version}</version>
    </dependency>

    <dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-library</artifactId>
      <version>${scala.version}</version>
    </dependency>

    <dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-compiler</artifactId>
      <version>${scala.version}</version>
    </dependency>

    <dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-reflect</artifactId>
      <version>${scala.version}</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>**/.idea/</exclude>
            <exclude>**/*.iml</exclude>
            <exclude>.gitignore</exclude>
            <exclude>**/.settings/*</exclude>
            <exclude>**/.classpath</exclude>
            <exclude>**/.project</exclude>
            <exclude>**/target/**</exclude>
            <exclude>**/README.md</exclude>
            <exclude>**/interpreter-setting.json</exclude>
            <exclude>dependency-reduced-pom.xml</exclude>
          </excludes>
        </configuration>
      </plugin>

      <!-- Scala Compiler -->
      <plugin>
	<groupId>net.alchim31.maven</groupId>
	<artifactId>scala-maven-plugin</artifactId>
	<version>3.2.2</version>
	<executions>
	  <!-- Run scala compiler in the process-resources phase, so that dependencies on
	       scala classes can be resolved later in the (Java) compile phase -->
	  <execution>
	    <id>scala-compile-first</id>
	    <phase>process-resources</phase>
	    <goals>
	      <goal>compile</goal>
	    </goals>
	  </execution>
          
	  <!-- Run scala compiler in the process-test-resources phase, so that dependencies on
	       scala classes can be resolved later in the (Java) test-compile phase -->
	  <execution>
	    <id>scala-test-compile</id>
	    <phase>process-test-resources</phase>
	    <goals>
	      <goal>testCompile</goal>
	    </goals>
	  </execution>
	</executions>
	<configuration>
	  <jvmArgs>
	    <jvmArg>-Xms128m</jvmArg>
	    <jvmArg>-Xmx512m</jvmArg>
	  </jvmArgs>
	  <compilerPlugins combine.children="append">
	    <compilerPlugin>
	      <groupId>org.scalamacros</groupId>
	      <artifactId>paradise_${scala.version}</artifactId>
	      <version>${scala.macros.version}</version>
	    </compilerPlugin>
	  </compilerPlugins>
	</configuration>
      </plugin>

      <!-- Eclipse Integration -->
      <plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-eclipse-plugin</artifactId>
	<version>2.8</version>
	<configuration>
	  <downloadSources>true</downloadSources>
	  <projectnatures>
	    <projectnature>org.scala-ide.sdt.core.scalanature</projectnature>
	    <projectnature>org.eclipse.jdt.core.javanature</projectnature>
	  </projectnatures>
	  <buildcommands>
	    <buildcommand>org.scala-ide.sdt.core.scalabuilder</buildcommand>
	  </buildcommands>
	  <classpathContainers>
	    <classpathContainer>org.scala-ide.sdt.launching.SCALA_CONTAINER</classpathContainer>
	    <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer>
	  </classpathContainers>
	  <!-- excludes>
	    <exclude>org.scala-lang:scala-library</exclude>
	    <exclude>org.scala-lang:scala-compiler</exclude>
	  </excludes -->
	  <sourceIncludes>
	    <sourceInclude>**/*.scala</sourceInclude>
	    <sourceInclude>**/*.java</sourceInclude>
	  </sourceIncludes>
	</configuration>
      </plugin>

      <!-- Adding scala source directories to build path -->
      <plugin>
	<groupId>org.codehaus.mojo</groupId>
	<artifactId>build-helper-maven-plugin</artifactId>
	<version>1.7</version>
	<executions>
	  <!-- Add src/main/scala to eclipse build path -->
	  <execution>
	    <id>add-source</id>
	    <phase>generate-sources</phase>
	    <goals>
	      <goal>add-source</goal>
	    </goals>
	    <configuration>
	      <sources>
		<source>src/main/scala</source>
	      </sources>
	    </configuration>
	  </execution>
	  <!-- Add src/test/scala to eclipse build path -->
	  <execution>
	    <id>add-test-source</id>
	    <phase>generate-test-sources</phase>
	    <goals>
	      <goal>add-test-source</goal>
	    </goals>
	    <configuration>
	      <sources>
		<source>src/test/scala</source>
	      </sources>
	    </configuration>
	  </execution>
	</executions>
      </plugin>

      <plugin>
	<groupId>org.scalastyle</groupId>
	<artifactId>scalastyle-maven-plugin</artifactId>
	<version>0.5.0</version>
	<executions>
	  <execution>
	    <goals>
	      <goal>check</goal>
	    </goals>
	  </execution>
	</executions>
	<configuration>
	  <verbose>false</verbose>
	  <failOnViolation>true</failOnViolation>
	  <includeTestSourceDirectory>true</includeTestSourceDirectory>
	  <failOnWarning>false</failOnWarning>
	  <sourceDirectory>${basedir}/src/main/scala</sourceDirectory>
	  <testSourceDirectory>${basedir}/src/test/scala</testSourceDirectory>
	  <configLocation>${project.basedir}/../_tools/scalastyle.xml</configLocation>
	  <outputFile>${project.basedir}/target/scalastyle-output.xml</outputFile>
	  <outputEncoding>UTF-8</outputEncoding>
	</configuration>
      </plugin>

      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.3.1</version>
        <executions>
          <execution>
            <id>enforce</id>
            <phase>none</phase>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.17</version>
        <configuration>
          <forkCount>1</forkCount>
          <reuseForks>false</reuseForks>
          <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/../../interpreter/flink</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>false</overWriteSnapshots>
              <overWriteIfNewer>true</overWriteIfNewer>
              <includeScope>runtime</includeScope>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-artifact</id>
            <phase>package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/../../interpreter/flink</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>false</overWriteSnapshots>
              <overWriteIfNewer>true</overWriteIfNewer>
              <includeScope>runtime</includeScope>
              <artifactItems>
                <artifactItem>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>${project.artifactId}</artifactId>
                  <version>${project.version}</version>
                  <type>${project.packaging}</type>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
