<?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>
<groupId>com.github.ehiggs</groupId>
<artifactId>spark-terasort</artifactId>
<version>1.1-SNAPSHOT</version>

<name>spark-terasort</name>
<url>https://github.com/ehiggs/spark-terasort</url>
<description>Terasort benchmark for Spark.</description>
<packaging>jar</packaging>
<scm>
  <connection>scm:git:git@github.com:ehiggs/${project.artifactId}.git</connection>
  <url>https://github.com/ehiggs/spark-terasort.git</url>
  <tag>spark-terasort-1.1</tag>
</scm>
<licenses>
  <license>
    <name>Apache 2.0 License</name>
    <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
    <distribution>repo</distribution>
  </license>
</licenses>
<developers>
  <developer>
    <id>ehiggs</id>
    <name>Ewan Higgs</name>
    <email>ewan.higgs@gmail.com</email>
  </developer>
</developers>

<distributionManagement>
  <snapshotRepository>
    <id>ossrh</id>
    <url>https://oss.sonatype.org/content/repositories/snapshots</url>
  </snapshotRepository>
  <repository>
    <id>ossrh</id>
    <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
  </repository>
</distributionManagement>

<build>
  <resources>
    <resource>
      <directory>${basedir}/src/main/scala</directory>
    </resource>
  </resources>
 <pluginManagement>
  <plugins>
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.1</version>
      <configuration>
        <source>1.7</source>
        <target>1.7</target>
      </configuration>
    </plugin>
    <plugin>
      <groupId>net.alchim31.maven</groupId>
      <artifactId>scala-maven-plugin</artifactId>
      <version>3.3.1</version>
      <executions>
        <execution>
          <goals>
            <goal>compile</goal>
            <goal>testCompile</goal>
          </goals>
        </execution>
        <execution>
          <id>attach-javadocs</id>
          <goals>
            <goal>doc-jar</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <sourceDir>src/main/scala</sourceDir>
        <jvmArgs>
          <jvmArg>-Xms64m</jvmArg>
          <jvmArg>-Xmx1024m</jvmArg>
        </jvmArgs>
      </configuration>
  </plugin>
  <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <executions>
        <!-- When using SPARK_PREPEND_CLASSES Spark classes compiled locally don't use
             shaded deps. So here we store jars in their original form which are added
             when the classpath is computed.
        -->
        <execution>
          <id>copy-dependencies</id>
          <phase>package</phase>
          <goals>
            <goal>copy-dependencies</goal>
          </goals>
          <configuration>
            <outputDirectory>${project.build.directory}</outputDirectory>
            <overWriteReleases>false</overWriteReleases>
            <overWriteSnapshots>false</overWriteSnapshots>
            <overWriteIfNewer>true</overWriteIfNewer>
            <useSubDirectoryPerType>true</useSubDirectoryPerType>
            <includeArtifactIds>
              guava
            </includeArtifactIds>
            <silent>true</silent>
          </configuration>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>2.4.1</version>
      <configuration>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
      </configuration>
      <executions>
        <execution>
          <id>make-assembly</id>
          <phase>package</phase>
          <goals>
            <goal>single</goal>
          </goals>
        </execution>
      </executions>
  </plugin>
  <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-source-plugin</artifactId>
      <version>2.4</version>
  </plugin>
  <plugin>
    <groupId>org.scalastyle</groupId>
    <artifactId>scalastyle-maven-plugin</artifactId>
    <version>0.4.0</version>
    <configuration>
      <verbose>false</verbose>
      <failOnViolation>true</failOnViolation>
      <includeTestSourceDirectory>false</includeTestSourceDirectory>
      <failOnWarning>false</failOnWarning>
      <sourceDirectory>${basedir}/src/main/scala</sourceDirectory>
      <testSourceDirectory>${basedir}/src/test/scala</testSourceDirectory>
      <configLocation>scalastyle-config.xml</configLocation>
      <outputFile>scalastyle-output.xml</outputFile>
      <outputEncoding>UTF-8</outputEncoding>
    </configuration>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>check</goal>
        </goals>
      </execution>
    </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <relocations>
            <relocation>
              <pattern>com.google.common</pattern>
              <shadedPattern>org.spark-project.guava</shadedPattern>
              <excludes>
                <!--
                  These classes cannot be relocated, because the Java API exposes the
                  "Optional" type; the others are referenced by the Optional class.
                -->
                <exclude>com/google/common/base/Absent*</exclude>
                <exclude>com/google/common/base/Function</exclude>
                <exclude>com/google/common/base/Optional*</exclude>
                <exclude>com/google/common/base/Present*</exclude>
                <exclude>com/google/common/base/Supplier</exclude>
              </excludes>
            </relocation>
          </relocations>
        </configuration>
      </plugin>
    </plugins>
 </pluginManagement>
  </build>

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <scala.version>2.11.8</scala.version>
  <scala.binary.version>2.11</scala.binary.version>
  <spark.version>2.1.0</spark.version>
</properties>

<dependencies>
  <dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>${scala.version}</version>
  </dependency>
  <dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_${scala.binary.version}</artifactId>
    <version>${spark.version}</version>
    <scope>provided</scope>
  </dependency>
  <dependency>                                                                
    <groupId>com.google.guava</groupId>                                       
    <artifactId>guava</artifactId>                                            
    <version>18.0</version>
  </dependency> 
</dependencies>
</project>