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

    Copyright © 2014 TU Berlin (emma@dima.tu-berlin.de)

    Licensed 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>org.emmalanguage</groupId>
    <artifactId>emma</artifactId>
    <version>0.2.0</version>
    <packaging>pom</packaging>

    <name>emma</name>
    <description>
        Emma is a quotation-based, deeply embedded Scala DSL for scalable data analysis.
        Emma aims is to improve developer productivity by maximizing the reuse of native Scala features in the DSL and
        hiding parallelism aspects of supported backend engines (e.g. Flink, Spark) behind a high-level, declarative
        API.
    </description>
    <inceptionYear>2014</inceptionYear>
    <url>https://emma-language.org</url>

    <licenses>
        <license>
            <name>The Apache License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
        </license>
    </licenses>

    <developers>
        <developer>
            <name>Alexander Alexandrov</name>
            <email>alexander.alexandrov@tu-berlin.de</email>
            <organization>TU Berlin</organization>
            <organizationUrl>https://www.tu-berlin.de</organizationUrl>
        </developer>
        <developer>
            <name>Gábor Gévay</name>
            <email>gevay@tu-berlin.de</email>
            <organization>TU Berlin</organization>
            <organizationUrl>https://www.tu-berlin.de</organizationUrl>
        </developer>
        <developer>
            <name>Georgi Krastev</name>
            <email>g.krastev@campus.tu-berlin.de</email>
            <organization>TU Berlin</organization>
            <organizationUrl>https://www.tu-berlin.de</organizationUrl>
        </developer>
        <developer>
            <name>Andreas Kunft</name>
            <email>andreas.kunft@tu-berlin.de</email>
            <organization>TU Berlin</organization>
            <organizationUrl>https://www.tu-berlin.de</organizationUrl>
        </developer>
        <developer>
            <name>Bernd Louis</name>
            <email>bernd.c.louis@campus.tu-berlin.de</email>
            <organization>TU Berlin</organization>
            <organizationUrl>https://www.tu-berlin.de</organizationUrl>
        </developer>
        <developer>
            <name>Felix Schüler</name>
            <email>felix.schueler@campus.tu-berlin.de</email>
            <organization>TU Berlin</organization>
            <organizationUrl>https://www.tu-berlin.de</organizationUrl>
        </developer>
    </developers>

    <scm>
        <connection>scm:git:git@github.com:emmalanguage/emma.git</connection>
        <developerConnection>scm:git:git@github.com:emmalanguage/emma.git</developerConnection>
        <url>git@github.com:emmalanguage/emma.git</url>
    </scm>

    <properties>
        <!-- Common -->
        <encoding>UTF-8</encoding>

        <!-- Maven Plugins -->
        <build-helper-maven-plugin.version>1.7</build-helper-maven-plugin.version>
        <maven-archetype-plugin.version>2.4</maven-archetype-plugin.version>
        <maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>
        <maven-eclipse-plugin.version>2.10</maven-eclipse-plugin.version>
        <maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
        <maven-install-plugin.version>2.5.2</maven-install-plugin.version>
        <maven-jar-plugin.version>3.0.2</maven-jar-plugin.version>
        <maven-javadoc-plugin.version>2.10.3</maven-javadoc-plugin.version>
        <maven-project-info-reports.version>2.9</maven-project-info-reports.version>
        <maven-site-plugin.version>3.5.1</maven-site-plugin.version>
        <maven-shade-plugin.version>2.4.1</maven-shade-plugin.version>
        <maven-surefire-plugin.version>2.18.1</maven-surefire-plugin.version>
        <maven-source-plugin.version>3.0.1</maven-source-plugin.version>
        <scala-maven-plugin.version>3.2.2</scala-maven-plugin.version>
        <scalastyle-maven-plugin.version>0.8.0</scalastyle-maven-plugin.version>
        <scalatest-maven-plugin.version>1.0</scalatest-maven-plugin.version>
        <nexus-staging-maven-plugin.version>1.6.8</nexus-staging-maven-plugin.version>

        <!-- Predicates -->
        <skipTests>false</skipTests>
        <scala-maven-plugin.skip>true</scala-maven-plugin.skip>
        <scalastyle-maven-plugin.skip>true</scalastyle-maven-plugin.skip>
        <scalatest-maven-plugin.skip>true</scalatest-maven-plugin.skip>

        <!-- Java -->
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>

        <!-- Scala -->
        <scala.version>2.11.11</scala.version>
        <scala.tools.version>2.11</scala.tools.version>

        <!-- Type-level -->
        <cats.version>0.9.0</cats.version>
        <shapeless.version>2.3.2</shapeless.version>

        <!-- Hadoop -->
        <hadoop.version>2.8.0</hadoop.version>
        <!-- Flink -->
        <flink.version>1.2.1</flink.version>
        <!-- Spark -->
        <spark.version>2.1.0</spark.version>
        <spark.indexedrdd.version>0.4.0</spark.indexedrdd.version>
        <!-- Parquet -->
        <parquet.version>1.9.0</parquet.version>

        <!-- Logging -->
        <log4j.version>1.2.17</log4j.version>
        <slf4j.version>1.7.25</slf4j.version>
        <scala-logging.version>2.1.2</scala-logging.version>

        <!-- Testing -->
        <junit.version>4.12</junit.version>
        <scalatest.version>3.0.3</scalatest.version>

        <!-- Other dependencies -->
        <scopt.version>3.5.0</scopt.version>
        <scala-arm.version>2.0</scala-arm.version>
        <spray-json.version>1.3.3</spray-json.version>
        <quiver.version>5.5.14-scalaz-7.2</quiver.version>
        <univocity-parsers.version>2.4.1</univocity-parsers.version>
        <typesafe-config.version>1.3.1</typesafe-config.version>

        <!-- Test configuration -->
        <excludedSurefireGroups>org.emmalanguage.examples.ExampleTest</excludedSurefireGroups>
        <compile-spec-pipelines>false</compile-spec-pipelines>
        <scala.scope>provided</scala.scope>
        <spark.scope>provided</spark.scope>
        <flink.scope>provided</flink.scope>
        <hadoop.scope>provided</hadoop.scope>
    </properties>

    <!-- Sonatype distribution management -->
    <distributionManagement>
        <snapshotRepository>
            <id>ossrh</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
    </distributionManagement>

    <repositories>
        <!-- Spark Packages Repo -->
        <repository>
            <id>spark</id>
            <url>http://dl.bintray.com/spark-packages/maven</url>
        </repository>
    </repositories>

    <dependencyManagement>
        <dependencies>
            <!-- Scala -->
            <dependency>
                <groupId>org.scala-lang</groupId>
                <artifactId>scala-library</artifactId>
                <version>${scala.version}</version>
                <scope>${scala.scope}</scope>
            </dependency>
            <dependency>
                <groupId>org.scala-lang</groupId>
                <artifactId>scala-compiler</artifactId>
                <version>${scala.version}</version>
                <scope>${scala.scope}</scope>
            </dependency>
            <dependency>
                <groupId>org.scala-lang</groupId>
                <artifactId>scala-reflect</artifactId>
                <version>${scala.version}</version>
                <scope>${scala.scope}</scope>
            </dependency>

            <!-- Emma -->
            <dependency>
                <groupId>org.emmalanguage</groupId>
                <artifactId>emma-flink</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.emmalanguage</groupId>
                <artifactId>emma-language</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.emmalanguage</groupId>
                <artifactId>emma-examples</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.emmalanguage</groupId>
                <artifactId>emma-gui</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.emmalanguage</groupId>
                <artifactId>emma-quickstart</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.emmalanguage</groupId>
                <artifactId>emma-spark</artifactId>
                <version>${project.version}</version>
            </dependency>
            <!-- Emma (test jars) -->
            <dependency>
                <groupId>org.emmalanguage</groupId>
                <artifactId>emma-language</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>

            <!-- Type-level -->
            <dependency>
                <groupId>org.typelevel</groupId>
                <artifactId>cats_${scala.tools.version}</artifactId>
                <version>${cats.version}</version>
            </dependency>
            <dependency>
                <groupId>com.chuusai</groupId>
                <artifactId>shapeless_${scala.tools.version}</artifactId>
                <version>${shapeless.version}</version>
            </dependency>

            <!-- Hadoop -->
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-common</artifactId>
                <version>${hadoop.version}</version>
                <scope>${hadoop.scope}</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-hdfs</artifactId>
                <version>${hadoop.version}</version>
                <scope>${hadoop.scope}</scope>
            </dependency>

            <!-- Flink -->
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-scala_${scala.tools.version}</artifactId>
                <version>${flink.version}</version>
                <scope>${flink.scope}</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-clients_${scala.tools.version}</artifactId>
                <version>${flink.version}</version>
                <scope>${flink.scope}</scope>
            </dependency>

            <!-- Spark -->
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-core_${scala.tools.version}</artifactId>
                <version>${spark.version}</version>
                <scope>${spark.scope}</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-sql_${scala.tools.version}</artifactId>
                <version>${spark.version}</version>
                <scope>${spark.scope}</scope>
            </dependency>
            <dependency>
                <groupId>amplab</groupId>
                <artifactId>spark-indexedrdd</artifactId>
                <version>${spark.indexedrdd.version}</version>
                <scope>${spark.scope}</scope>
            </dependency>

            <!-- Parquet -->
            <dependency>
                <groupId>org.apache.parquet</groupId>
                <artifactId>parquet-common</artifactId>
                <version>${parquet.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.parquet</groupId>
                <artifactId>parquet-encoding</artifactId>
                <version>${parquet.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.parquet</groupId>
                <artifactId>parquet-column</artifactId>
                <version>${parquet.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.parquet</groupId>
                <artifactId>parquet-hadoop</artifactId>
                <version>${parquet.version}</version>
            </dependency>

            <!-- CSV -->
            <dependency>
                <groupId>com.univocity</groupId>
                <artifactId>univocity-parsers</artifactId>
                <version>${univocity-parsers.version}</version>
            </dependency>

            <!-- Logging -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>com.typesafe.scala-logging</groupId>
                <artifactId>scala-logging-slf4j_${scala.tools.version}</artifactId>
                <version>${scala-logging.version}</version>
            </dependency>

            <!-- Scalactic -->
            <dependency>
                <groupId>org.scalactic</groupId>
                <artifactId>scalactic_${scala.tools.version}</artifactId>
                <version>${scalatest.version}</version><!-- use scalatest version -->
            </dependency>

            <!-- Test -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.scalatest</groupId>
                <artifactId>scalatest_${scala.tools.version}</artifactId>
                <version>${scalatest.version}</version>
                <scope>test</scope>
            </dependency>

            <!-- Arguments parsing -->
            <dependency>
                <groupId>com.github.scopt</groupId>
                <artifactId>scopt_${scala.tools.version}</artifactId>
                <version>${scopt.version}</version>
            </dependency>

            <!-- Auto-Resource Management -->
            <dependency>
                <groupId>com.jsuereth</groupId>
                <artifactId>scala-arm_${scala.tools.version}</artifactId>
                <version>${scala-arm.version}</version>
            </dependency>

            <!-- JSON-Rendering -->
            <dependency>
                <groupId>io.spray</groupId>
                <artifactId>spray-json_${scala.tools.version}</artifactId>
                <version>${spray-json.version}</version>
            </dependency>

            <!-- Functional graphs -->
            <dependency>
                <groupId>io.verizon.quiver</groupId>
                <artifactId>core_${scala.tools.version}</artifactId>
                <version>${quiver.version}</version>
            </dependency>

            <!-- Hocon configuration -->
            <dependency>
                <groupId>com.typesafe</groupId>
                <artifactId>config</artifactId>
                <version>${typesafe-config.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.scalatest</groupId>
            <artifactId>scalatest_${scala.tools.version}</artifactId>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <!-- Maven Install -->
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>${maven-install-plugin.version}</version>
                </plugin>

                <!-- Shade Package (Create package with dependencies) -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>${maven-shade-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>shade-package</id>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <minimizeJar>false</minimizeJar>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <!-- Scala compiler -->
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>${scala-maven-plugin.version}</version>
                <executions>
                    <execution>
                        <id>scala-compile-first</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>scala-test-compile</id>
                        <phase>test-compile</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- Predicated plugin -->
                    <skip>${scala-maven-plugin.skip}</skip>
                    <!-- Configuration -->
                    <scalaCompatVersion>${scala.tools.version}</scalaCompatVersion>
                    <scalaVersion>${scala.version}</scalaVersion>
                    <recompileMode>incremental</recompileMode>
                    <useZincServer>true</useZincServer>
                    <compilerPlugins>
                        <compilerPlugin>
                            <groupId>org.scalamacros</groupId>
                            <artifactId>paradise_${scala.version}</artifactId>
                            <version>2.1.0</version>
                        </compilerPlugin>
                    </compilerPlugins>
                    <jvmArgs>
                        <jvmArg>-Xms256m</jvmArg>
                        <jvmArg>-Xmx512m</jvmArg>
                        <jvmArg>-Xss16m</jvmArg>
                        <jvmArg>-XX:+UseConcMarkSweepGC</jvmArg>
                        <jvmArg>-XX:+CMSClassUnloadingEnabled</jvmArg>
                    </jvmArgs>
                    <javacArgs>
                        <javacArg>-Xlint:unchecked</javacArg>
                        <javacArg>-Xlint:deprecation</javacArg>
                    </javacArgs>
                    <args>
                        <arg>-unchecked</arg>
                        <arg>-deprecation</arg>
                        <arg>-feature</arg>
                        <arg>-Yrangepos</arg>
                        <arg>-Ywarn-unused-import</arg>
                        <arg>-Xmax-classfile-name</arg>
                        <arg>140</arg>
                        <arg>-Xlint:-adapted-args,_</arg>
                        <arg>-Xfatal-warnings</arg>
                        <!--<arg>-Xdisable-assertions</arg>-->
                    </args>
                </configuration>
            </plugin>

            <!-- Eclipse integration -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>${maven-eclipse-plugin.version}</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>${build-helper-maven-plugin.version}</version>
                <executions>
                    <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>
                    <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>

            <!-- Creating code generation folder on the fly -->
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>generate-sources</phase>
                        <configuration>
                            <target>
                                <mkdir dir="${java.io.tmpdir}/emma/codegen"/>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- Disable surefire -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven-surefire-plugin.version}</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>

            <!-- Enable scalatest -->
            <plugin>
                <groupId>org.scalatest</groupId>
                <artifactId>scalatest-maven-plugin</artifactId>
                <version>${scalatest-maven-plugin.version}</version>
                <configuration>
                    <!-- Predicated plugin -->
                    <skipTests>${scalatest-maven-plugin.skip}</skipTests>
                    <!-- Adding code generation folder to the classpath -->
                    <runpath>${java.io.tmpdir}/emma/codegen/</runpath>
                    <!-- Memory for the Travis build -->
                    <argLine>-Xms3096m -Xms3096m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled</argLine>
                    <!-- Reporters configuration -->
                    <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
                    <junitxml>.</junitxml>
                    <filereports>WDF TestSuite.txt</filereports>
                </configuration>
                <executions>
                    <execution>
                        <id>test</id>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <suffixes>(?&lt;!Integration)(Test|Spec)</suffixes>
                        </configuration>
                    </execution>
                    <execution>
                        <id>integration-test</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <suffixes>(?&lt;=Integration)(Test|Spec)</suffixes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- Scala style check -->
            <plugin>
                <groupId>org.scalastyle</groupId>
                <artifactId>scalastyle-maven-plugin</artifactId>
                <version>${scalastyle-maven-plugin.version}</version>
                <configuration>
                    <!-- Predicated plugin -->
                    <skip>${scalastyle-maven-plugin.skip}</skip>
                    <!-- Configuration -->
                    <verbose>false</verbose>
                    <failOnViolation>true</failOnViolation>
                    <failOnWarning>true</failOnWarning>
                    <includeTestSourceDirectory>true</includeTestSourceDirectory>
                    <sourceDirectory>${project.basedir}/src/main/scala</sourceDirectory>
                    <testSourceDirectory>${project.basedir}/src/test/scala</testSourceDirectory>
                    <detail>true</detail>
                    <configLocation>${user.dir}/scalastyle_config.xml</configLocation>
                    <outputFile>${project.build.directory}/scalastyle-output.xml</outputFile>
                    <outputEncoding>UTF-8</outputEncoding>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- Check for proper LICENSE header -->
            <plugin>
                <groupId>com.mycila</groupId>
                <artifactId>license-maven-plugin</artifactId>
                <version>3.0</version>
                <executions>
                    <execution>
                        <id>check-license</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <header>com/mycila/maven/plugin/license/templates/APACHE-2.txt</header>
                    <properties>
                        <owner>TU Berlin</owner>
                        <email>emma@dima.tu-berlin.de</email>
                    </properties>
                    <excludes>
                        <exclude>**/LICENSE</exclude>
                        <exclude>**/NOTICE*</exclude>
                        <exclude>**/README.md</exclude>
                        <exclude>**/**.ipynb</exclude>
                        <exclude>**/scalastyle_config.xml</exclude>
                        <exclude>src/test/resources/**</exclude>
                        <exclude>src/main/resources/**</exclude>
                        <exclude>public/js/paper-full-v0.9.23.min.js</exclude>
                        <exclude>public/**/*foundation*</exclude>
                        <exclude>docs/**</exclude>
                    </excludes>
                    <mapping>
                        <scala>SLASHSTAR_STYLE</scala>
                        <java>SLASHSTAR_STYLE</java>
                    </mapping>
                </configuration>
            </plugin>

            <!-- Generate NOTICE file -->
            <plugin>
                <groupId>org.jasig.maven</groupId>
                <artifactId>maven-notice-plugin</artifactId>
                <version>1.0.6.1</version>
                <executions>
                    <execution>
                        <id>check-notice</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <generateChildNotices>false</generateChildNotices>
                    <noticeTemplate>
                        file://${project.basedir}/tools/NOTICE.template
                    </noticeTemplate>
                    <includeChildDependencies>true</includeChildDependencies>
                    <licenseMapping>
                        <param>https://source.jasig.org/licenses/license-mappings.xml</param>
                        <param>file://${project.basedir}/tools/license-mappings.xml</param>
                    </licenseMapping>
                    <generateChildNotices>false</generateChildNotices>
                </configuration>
            </plugin>

            <!-- Maven Deploy (disabled) -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>${maven-deploy-plugin.version}</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>

            <!-- Nexus Staging -->
            <plugin>
                <groupId>org.sonatype.plugins</groupId>
                <artifactId>nexus-staging-maven-plugin</artifactId>
                <version>${nexus-staging-maven-plugin.version}</version>
                <extensions>true</extensions>
                <configuration>
                    <serverId>ossrh</serverId>
                    <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                    <autoReleaseAfterClose>false</autoReleaseAfterClose>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <!-- Profile that activates integration tests and compile-spec-pipelines -->
        <profile>
            <id>compile-spec-pipelines</id>
            <properties>
                <!-- Test configuration -->
                <compile-spec-pipelines>true</compile-spec-pipelines>
            </properties>
        </profile>
        <!-- profile for Sonatype releases -->
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>${maven-source-plugin.version}</version><!--$NO-MVN-MAN-VER$-->
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>net.alchim31.maven</groupId>
                        <artifactId>scala-maven-plugin</artifactId>
                        <version>${scala-maven-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>doc-jar</goal>
                                </goals>
                                <configuration>
                                    <displayCmd>true</displayCmd>
                                    <args>
                                        <arg>-no-link-warnings</arg>
                                    </args>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>${maven-javadoc-plugin.version}</version><!--$NO-MVN-MAN-VER$-->
                        <configuration>
                            <quiet>true</quiet>
                            <skip>false</skip>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>${maven-gpg-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <modules>
        <module>emma-language</module>
        <module>emma-flink</module>
        <module>emma-spark</module>
        <module>emma-examples</module>
        <module>emma-benchmarks</module>
        <module>emma-gui</module>
        <module>emma-quickstart</module>
    </modules>

</project>
