<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>net.sansa-stack</groupId>
    <artifactId>sansa-parent_2.12</artifactId>
    <version>0.8.0-RC1</version>
    <packaging>pom</packaging>
    <name>SANSA - Parent</name>

    <description>SANSA Parent project for managing common dependencies, plugins, meta-data, properties, etc.
    </description>

    <organization>
        <name>Smart Data Analytics (SDA) Research Group</name>
        <url>http://sda.tech/</url>
    </organization>

    <inceptionYear>2016</inceptionYear>

    <url>http://sansa-stack.net/</url>

    <licenses>
        <license>
            <name>GNU GENERAL PUBLIC LICENSE, Version 3</name>
            <url>http://www.gnu.org/licenses/gpl-3.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <scm>
        <url>https://github.com/SANSA-Stack/SANSA-RDF</url>
        <connection>scm:git:git://github.com/SANSA-Stack/SANSA-Stack.git</connection>
        <developerConnection>scm:git:git@github.com:SANSA-Stack/SANSA-Stack.git</developerConnection>
        <tag>HEAD</tag>
    </scm>

    <issueManagement>
        <url>https://github.com/SANSA-Stack/SANSA-Stack/issues</url>
        <system>GitHub</system>
    </issueManagement>

    <prerequisites>
        <maven>3.1</maven>
    </prerequisites>

    <properties>
        <maven.version>3.1</maven.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <java.version>1.8</java.version>

        <scala.version>2.12.11</scala.version>
        <scala.binary.version>2.12</scala.binary.version>
        <scala.classifier>${scala.binary.version}</scala.classifier>
        <scala.version.suffix>_${scala.binary.version}</scala.version.suffix>

        <flink.version>1.11.2</flink.version>
        <spark.version>3.0.1</spark.version>
        <!-- Spark Testing isn't always in sync, so we have to check for latest version and adapt here -->
        <spark.testing.version>3.0.1_1.0.0</spark.testing.version>

        <!--<hadoop.version>3.2.1</hadoop.version>-->
        <hadoop.version>2.8.5</hadoop.version>
        <hadoop.common.version>${hadoop.version}</hadoop.common.version>

        <!-- Our util projects (mainly maintained by Claus) -->
        <aksw-commons.version>0.9.0</aksw-commons.version>
        <jena.version>3.17.0</jena.version>
        <jsa.subversion>1</jsa.subversion>
        <jsa.version>${jena.version}-${jsa.subversion}</jsa.version>

        <rdf4j.version>3.3.0</rdf4j.version>

        <!-- Jetty is pulled in from at least sparqlify - the current dep declarations
            do not cover all mentioned jetty deps -->
        <!-- <jetty.version>9.4.9.4.18.v20190429</jetty.version> -->
        <!-- <mortbay.jetty.version>6.1.26</mortbay.jetty.version> -->

        <!-- origin: sansa-query -->
        <httpcomponents.version>4.5.12</httpcomponents.version>


        <owlapi.version>5.1.17</owlapi.version>

        <ontop.version>4.0.9-sansa</ontop.version>

        <guava.version>30.1-jre</guava.version>
        <!--        <guava.version>14.0.1</guava.version>-->

        <sansa.version>${project.version}</sansa.version>
        <!--		<scalastyle.config.path>${project.basedir}/scalastyle-config.xml</scalastyle.config.path>-->

        <CodeCacheSize>1g</CodeCacheSize>

        <!--
          Dependency scopes that can be overridden by enabling certain profiles. These profiles are
          declared in the projects that build assemblies.
          For other projects the scope should remain as "compile", otherwise they are not available
          during compilation if the dependency is transitive (e.g. "graphx/" depending on "core/" and
          needing Hadoop classes in the classpath to compile).
        -->
        <hadoop.deps.scope>compile</hadoop.deps.scope>
        <spark.deps.scope>compile</spark.deps.scope>
        <flink.deps.scope>compile</flink.deps.scope>
    </properties>

    <modules>
        <module>sansa-hadoop-jena</module>
        <module>sansa-kryo-jena</module>

        <module>sansa-test-resources</module>
        <module>sansa-resource-metadata</module>
        <module>sansa-resource-testdata</module>
        <module>sansa-rdf</module>
        <module>sansa-datalake</module>
        <module>sansa-query</module>
        <module>sansa-owl</module>
        <module>sansa-inference</module>
        <module>sansa-ml</module>
        <module>sansa-examples</module>
        <module>sansa-integration-tests</module>
        <module>sansa-spark-cli</module>
        <module>sansa-debian-spark-cli</module>
        <module>sansa-bench-spark</module>
    </modules>


    <dependencies>
        <dependency>
            <groupId>org.scalatest</groupId>
            <artifactId>scalatest_${scala.binary.version}</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.vladsch.flexmark</groupId>
            <artifactId>flexmark-all</artifactId>
            <scope>test</scope>
        </dependency>
        <!--        <dependency>-->
        <!--            <groupId>org.scalatest</groupId>-->
        <!--            <artifactId>scalatest-funsuite_${scala.binary.version}</artifactId>-->
        <!--            <scope>test</scope>-->
        <!--        </dependency>-->
        <!--        <dependency>-->
        <!--            <groupId>org.scalatest</groupId>-->
        <!--            <artifactId>scalatest-flatspec_${scala.binary.version}</artifactId>-->
        <!--            <scope>test</scope>-->
        <!--        </dependency>-->
        <!--        <dependency>-->
        <!--            <groupId>org.scalatest</groupId>-->
        <!--            <artifactId>scalatest-shouldmatchers_${scala.binary.version}</artifactId>-->
        <!--            <scope>test</scope>-->
        <!--        </dependency>-->
    </dependencies>


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.esotericsoftware</groupId>
                <artifactId>kryo</artifactId>
                <version>4.0.2</version>
            </dependency>

            <dependency>
                <groupId>net.sansa-stack</groupId>
                <artifactId>sansa-test-resources_${scala.binary.version}</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>net.sansa-stack</groupId>
                <artifactId>sansa-kryo-jena</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>net.sansa-stack</groupId>
                <artifactId>sansa-hadoop-jena</artifactId>
                <version>${project.version}</version>
            </dependency>


            <!-- General SANSA metadata file (build time / version) -->
            <dependency>
                <groupId>net.sansa-stack</groupId>
                <artifactId>sansa-resource-metadata</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>net.sansa-stack</groupId>
                <artifactId>sansa-resource-testdata</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>sansa-spark-cli_${scala.binary.version}</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- SANSA layers -->
            <!-- RDF Layer -->
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>sansa-rdf-spark_${scala.binary.version}</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>sansa-rdf-flink_${scala.binary.version}</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- OWL Layer -->
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>sansa-owl-spark_${scala.binary.version}</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>sansa-owl-flink_${scala.binary.version}</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- Query Layer -->
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>sansa-query-spark_${scala.binary.version}</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>sansa-query-flink_${scala.binary.version}</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- Datalake Layer -->
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>sansa-datalake-spark_${scala.binary.version}</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- Inference Layer -->
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>sansa-inference-spark_${scala.binary.version}</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>sansa-inference-flink_${scala.binary.version}</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- ML Layer -->
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>sansa-ml-spark_${scala.binary.version}</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>sansa-ml-flink_${scala.binary.version}</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- Fix for https://stackoverflow.com/questions/64453555/error-with-sansa-unable-to-create-rdd-from-nt-file -->

            <dependency>
                <groupId>com.thoughtworks.paranamer</groupId>
                <artifactId>paranamer</artifactId>
                <version>2.8</version>
            </dependency>


            <!-- Kryo -->
            <!-- Note: don't use versions above 0.43 for now, for whatever reason they depend on Kryo 5.0.0 RC1 which is
            binary incompatible and not used by Spark -->
            <dependency>
                <groupId>de.javakaffee</groupId>
                <artifactId>kryo-serializers</artifactId>
                <version>0.43</version>
            </dependency>

            <dependency>
                <groupId>com.twitter</groupId>
                <artifactId>chill_${scala.binary.version}</artifactId>
                <version>0.9.5</version>
            </dependency>

            <dependency>
                <groupId>com.twitter</groupId>
                <artifactId>chill-java</artifactId>
                <version>0.9.5</version>
            </dependency>

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

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

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

            <dependency>
                <groupId>org.scala-lang.modules</groupId>
                <artifactId>scala-java8-compat_${scala.binary.version}</artifactId>
                <version>0.9.1</version>
            </dependency>

            <dependency>
                <groupId>org.scala-lang.modules</groupId>
                <artifactId>scala-parser-combinators_${scala.binary.version}</artifactId>
                <version>1.1.2</version>
            </dependency>

            <dependency>
                <groupId>org.scala-lang.modules</groupId>
                <artifactId>scala-xml_${scala.binary.version}</artifactId>
                <version>1.0.5</version>
            </dependency>

            <!-- Miscellaneous -->

            <!-- Thrift: Conflict between Jena with 0.13.0 vs Spark with 0.12.0 -->
            <!-- So far using jena/thrift fails with unknown type for a thrift Map -->
            <dependency>
                <groupId>org.apache.thrift</groupId>
                <artifactId>libthrift</artifactId>
                <version>0.13.0</version>
            </dependency>

            <!-- Attempt to use hdt instead of thrift -->
            <dependency>
                <groupId>org.aksw.jena-sparql-api</groupId>
                <artifactId>jena-sparql-api-io-hdt</artifactId>
                <version>${jsa.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.12.0</version>
            </dependency>

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-compress</artifactId>
                <version>1.20</version>
            </dependency>

            <dependency>
                <groupId>org.aksw.r2rml</groupId>
                <artifactId>r2rml-jena-plugin</artifactId>
                <version>0.9.0</version>
            </dependency>

            <dependency>
                <groupId>org.aksw.r2rml</groupId>
                <artifactId>r2rml-jena-sql-transforms</artifactId>
                <version>0.9.0</version>
            </dependency>


            <!-- Datalake (used in sansa-query) -->
            <!--
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>sansa-datalake-spark${scala.version.suffix}</artifactId>
                <version>${project.version}</version>
            </dependency>
            -->

            <!-- Our exception utils -->
            <dependency>
                <groupId>org.aksw.commons</groupId>
                <artifactId>aksw-commons-util</artifactId>
                <version>${aksw-commons.version}</version>
            </dependency>

            <!-- Framework for building nestable aggregators; used in SchemaMapper and RecordReaderGenericBase -->
            <dependency>
                <groupId>org.aksw.commons</groupId>
                <artifactId>aksw-commons-collectors</artifactId>
                <version>${aksw-commons.version}</version>
            </dependency>

            <dependency>
                <groupId>org.aksw.commons</groupId>
                <artifactId>aksw-commons-io-utils</artifactId>
                <version>${aksw-commons.version}</version>
            </dependency>

            <!-- web server component for use with sparqlify in sansa-query -->
            <dependency>
                <groupId>org.aksw.jena-sparql-api</groupId>
                <artifactId>jena-sparql-api-server-standalone</artifactId>
                <version>${jsa.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.sun.xml.bind</groupId>
                        <artifactId>jaxb-impl</artifactId>
                    </exclusion>

                    <!-- <exclusion> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId>
                        </exclusion> <exclusion> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-xml</artifactId>
                        </exclusion> -->
                </exclusions>
                <!-- <classifier>${scala.compat.version}</classifier> -->
            </dependency>

            <!-- Jena-SPARQL-API -->
            <dependency>
                <groupId>org.aksw.jena-sparql-api</groupId>
                <artifactId>jena-sparql-api-core</artifactId>
                <version>${jsa.version}</version>
            </dependency>

            <!-- rxjava ideomatic SPARQL fluents
                 Ssimilar to Java8 Streams but with resource management and back pressure handling  -->
            <dependency>
                <groupId>org.aksw.jena-sparql-api</groupId>
                <artifactId>jena-sparql-api-rx</artifactId>
                <version>${jsa.version}</version>
            </dependency>

            <!-- Io package; used for the distributed trig reader hadoop plugin -->
            <dependency>
                <groupId>org.aksw.jena-sparql-api</groupId>
                <artifactId>jena-sparql-api-io-core</artifactId>
                <version>${jsa.version}</version>
            </dependency>

            <!-- Annotations for auto-generating implementations of custom Jena Resources -->
            <dependency>
                <groupId>org.aksw.jena-sparql-api</groupId>
                <artifactId>jena-sparql-api-mapper-annotations</artifactId>
                <version>${jsa.version}</version>
            </dependency>

            <!-- The annotation processor that auto-generates implementations of custom Jena Resources -->
            <dependency>
                <groupId>org.aksw.jena-sparql-api</groupId>
                <artifactId>jena-sparql-api-mapper-proxy</artifactId>
                <version>${jsa.version}</version>
            </dependency>

            <!-- Legacy dependency; mainly used because of a dedicated HealthCheck runner for SPARQL endpoints
            TODO Mark for removal -->
            <dependency>
                <groupId>org.aksw.jena-sparql-api</groupId>
                <artifactId>jena-sparql-api-virtuoso</artifactId>
                <version>${jsa.version}</version>
            </dependency>

            <!-- Algebra and query optimization package; features transformers not part of jena -->
            <dependency>
                <groupId>org.aksw.jena-sparql-api</groupId>
                <artifactId>jena-sparql-api-algebra</artifactId>
                <version>${jsa.version}</version>
                <exclusions>
                    <!-- Conflict with ontop's ancient jgrapht version; since jgrapht 1.2 most subclasses of Graph (such as DirectedGraph) were removed in favor of a capabilites pattern; more drastice changes happened with 1.3 -->
                    <exclusion>
                        <groupId>org.jgrapht</groupId>
                        <artifactId>jgrapht-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.aksw.jena-sparql-api</groupId>
                <artifactId>jena-sparql-api-views</artifactId>
                <version>${jsa.version}</version>
            </dependency>

            <!-- Used for result set analysis such as used datatypes and prefixs -->
            <!-- Parallelizable aggregation builder framework + tuple/binding analysers -->
            <dependency>
                <groupId>org.aksw.jena-sparql-api</groupId>
                <artifactId>jena-sparql-api-analytics</artifactId>
                <version>${jsa.version}</version>
            </dependency>


            <!-- Mighty command line parsing framework -->
            <dependency>
                <groupId>info.picocli</groupId>
                <artifactId>picocli</artifactId>
                <version>4.4.0</version>
            </dependency>


            <!-- Http components -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore</artifactId>
                <version>4.4.13</version>
                <!-- was 4.4.6; not sure why not ${httpcomponents.version} is used; taken over from
                query layer ~ Claus -->
            </dependency>

            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>${httpcomponents.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient-cache</artifactId>
                <version>${httpcomponents.version}</version>
            </dependency>


            <!-- Servlet engines -->
            <!--
                        <dependency>
                            <groupId>org.mortbay.jetty</groupId>
                            <artifactId>jetty</artifactId>
                            < !- - <scope>provided</scope> - - >
                            <version>${mortbay.jetty.version}</version>
                        </dependency>

                        <dependency>
                            <groupId>org.mortbay.jetty</groupId>
                            <artifactId>jetty-util</artifactId>
                            < !- - <scope>provided</scope> - - >
                            <version>${mortbay.jetty.version}</version>
                        </dependency>
            -->

            <!-- <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId>
                <version>${jetty.version}</version> </dependency> -->

            <!-- HADOOP dependencies (mainly used for InputFormat definitions) -->
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-mapreduce-client-core</artifactId>
                <version>${hadoop.version}</version>
                <scope>${hadoop.deps.scope}</scope>
                <exclusions>
                    <exclusion>
                        <groupId>com.thoughtworks.paranamer</groupId>
                        <artifactId>paranamer</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.servlet</groupId>
                        <artifactId>servlet-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-server</artifactId>
                    </exclusion>

                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-client</artifactId>
                    </exclusion>

                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-json</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jersey.contribs</groupId>
                        <artifactId>jersey-guice</artifactId>
                    </exclusion>

                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-common</artifactId>
                <version>${hadoop.version}</version>
                <scope>${hadoop.deps.scope}</scope>
                <exclusions>
                    <exclusion>
                        <groupId>javax.servlet</groupId>
                        <artifactId>servlet-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-server</artifactId>
                    </exclusion>

                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-json</artifactId>
                    </exclusion>


                    <exclusion>
                        <groupId>com.google.guava</groupId>
                        <artifactId>guava</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-streaming</artifactId>
                <version>${hadoop.version}</version>
                <scope>${hadoop.deps.scope}</scope>
                <exclusions>
                    <exclusion>
                        <groupId>javax.servlet</groupId>
                        <artifactId>servlet-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-server</artifactId>
                    </exclusion>

                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-json</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.google.guava</groupId>
                        <artifactId>guava</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-hdfs</artifactId>
                <version>${hadoop.version}</version>
                <scope>${hadoop.deps.scope}</scope>
                <exclusions>
                    <exclusion>
                        <groupId>javax.servlet</groupId>
                        <artifactId>servlet-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-server</artifactId>
                    </exclusion>

                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-json</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.google.guava</groupId>
                        <artifactId>guava</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- SPARK -->
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-core_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
                <scope>${spark.deps.scope}</scope>
                <!-- Experimental exclusions ~ Claus, 5.1 -->
                <exclusions>
                    <exclusion>
                        <groupId>javax.ws.rs</groupId>
                        <artifactId>javax.ws.rs-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

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

            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-sql_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
                <scope>${spark.deps.scope}</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-graphx_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
                <scope>${spark.deps.scope}</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-streaming_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
                <scope>${spark.deps.scope}</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-streaming-kafka-0-10_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
                <scope>${spark.deps.scope}</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-mllib_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
                <scope>${spark.deps.scope}</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-hive_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
                <scope>${spark.deps.scope}</scope>
                <!--<scope>test</scope>-->
                <!--
                <exclusions>
                <exclusion>
                        <groupId>commons-codec</groupId>
                        <artifactId>commons-codec</artifactId>
                </exclusion>
                </exclusions>
                -->
            </dependency>
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>1.14</version>
            </dependency>

            <!-- Spark Testing -->
            <dependency>
                <groupId>com.holdenkarau</groupId>
                <artifactId>spark-testing-base_${scala.binary.version}</artifactId>
                <version>${spark.testing.version}</version>

                <!-- Experimental exclusions ~ Claus, 5.1 -->
                <exclusions>
                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-server</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-client</artifactId>
                    </exclusion>

                    <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-json</artifactId>
                    </exclusion>

                    <exclusion>
                        <groupId>com.sun.jersey.contribs</groupId>
                        <artifactId>jersey-guice</artifactId>
                    </exclusion>

                    <exclusion>
                        <groupId>org.eclipse.jetty</groupId>
                        <artifactId>jetty-util</artifactId>
                    </exclusion>

                </exclusions>
            </dependency>

            <!-- Spark-Bench -->
            <dependency>
                <groupId>com.ibm.sparktc.sparkbench</groupId>
                <artifactId>sparkbench</artifactId>
                <version>2.3.0_0.4.0</version>
            </dependency>


            <!-- FLINK -->
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-scala_${scala.binary.version}</artifactId>
                <version>${flink.version}</version>
                <scope>${flink.deps.scope}</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-streaming-scala_${scala.binary.version}</artifactId>
                <version>${flink.version}</version>
                <scope>${flink.deps.scope}</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-clients_${scala.binary.version}</artifactId>
                <version>${flink.version}</version>
                <scope>${flink.deps.scope}</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-gelly-scala_${scala.binary.version}</artifactId>
                <version>${flink.version}</version>
                <scope>${flink.deps.scope}</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-table-common</artifactId>
                <version>${flink.version}</version>
                <scope>${flink.deps.scope}</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-table-planner_${scala.binary.version}</artifactId>
                <version>${flink.version}</version>
                <scope>${flink.deps.scope}</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-table-planner-blink_${scala.binary.version}</artifactId>
                <version>${flink.version}</version>
                <scope>${flink.deps.scope}</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-table-api-scala_${scala.binary.version}</artifactId>
                <version>${flink.version}</version>
                <scope>${flink.deps.scope}</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-table-api-scala-bridge_${scala.binary.version}</artifactId>
                <version>${flink.version}</version>
                <scope>${flink.deps.scope}</scope>
            </dependency>
            <!-- required since Flink 1.3 to custom Hadoop based input formats -->
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-hadoop-compatibility_${scala.binary.version}</artifactId>
                <version>${flink.version}</version>
                <scope>${flink.deps.scope}</scope>
            </dependency>

            <!-- <dependency> -->
            <!-- <groupId>org.apache.flink</groupId> -->
            <!-- <artifactId>flink-shaded-hadoop</artifactId> -->
            <!-- <version>${flink.version}</version> -->
            <!-- <type>pom</type> -->
            <!-- </dependency> -->


            <!-- SANSA RDF -->
            <dependency>
                <groupId>org.specs</groupId>
                <artifactId>specs</artifactId>
                <version>1.4.3</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.scalatest</groupId>
                        <artifactId>scalatest</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- Ontop -->
            <dependency>
                <groupId>it.unibz.inf.ontop</groupId>
                <artifactId>ontop-owlapi</artifactId>
                <version>${ontop.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-classic</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>it.unibz.inf.ontop</groupId>
                <artifactId>ontop-system-sql-owlapi</artifactId>
                <version>${ontop.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-classic</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>it.unibz.inf.ontop</groupId>
                <artifactId>ontop-rdb</artifactId>
                <version>${ontop.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-classic</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- Sparqlify -->
            <dependency>
                <groupId>org.aksw.sparqlify</groupId>
                <artifactId>sparqlify-core</artifactId>
                <version>0.9.0</version>
                <exclusions>
                    <!-- <exclusion> <groupId>cglib</groupId> <artifactId>cglib</artifactId>
                        </exclusion> -->
                    <exclusion>
                        <groupId>net.postgis</groupId>
                        <artifactId>postgis-jdbc</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.aksw.sparqlify</groupId>
                        <artifactId>sparqlify-tests</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.hive</groupId>
                        <artifactId>hive-jdbc</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework.batch</groupId>
                        <artifactId>spring-batch-infrastructure</artifactId>
                    </exclusion>
                    <!-- <exclusion>
                        <groupId>commons-codec</groupId>
                        <artifactId>commons-codec</artifactId>
                    </exclusion> -->
                </exclusions>
            </dependency>


            <!-- Apache JENA 3.x -->
            <dependency>
                <groupId>org.apache.jena</groupId>
                <artifactId>jena-core</artifactId>
                <version>${jena.version}</version>
            </dependency>

            <!-- Jena's (newer) vesion of jackson conflicts with hadoop's and causes
                it to crash -->
            <dependency>
                <groupId>org.apache.jena</groupId>
                <artifactId>jena-arq</artifactId>
                <version>${jena.version}</version>
            </dependency>


            <!-- Default (mostly non-splitting) hadoop-based RDF record reading using jena -->
            <dependency>
                <groupId>org.apache.jena</groupId>
                <artifactId>jena-elephas-io</artifactId>
                <version>${jena.version}</version>
            </dependency>

            <!-- Used in query layer apparently -->
            <dependency>
                <groupId>org.apache.jena</groupId>
                <artifactId>apache-jena-libs</artifactId>
                <version>${jena.version}</version>
                <type>pom</type>
            </dependency>

            <dependency>
                <groupId>org.apache.jena</groupId>
                <artifactId>jena-fuseki-server</artifactId>
                <version>${jena.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.jena</groupId>
                <artifactId>jena-tdb</artifactId>
                <version>${jena.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.jena</groupId>
                <artifactId>jena-cmds</artifactId>
                <version>${jena.version}</version>
            </dependency>

            <!-- Graph API -->
            <dependency>
                <groupId>org.scala-graph</groupId>
                <artifactId>graph-core_${scala.binary.version}</artifactId>
                <version>1.12.5</version>
            </dependency>
            <dependency>
                <groupId>org.scala-graph</groupId>
                <artifactId>graph-dot_${scala.binary.version}</artifactId>
                <version>1.11.5</version>
            </dependency>
            <dependency>
                <groupId>org.jgrapht</groupId>
                <artifactId>jgrapht-core</artifactId>
                <version>1.2.0</version>
            </dependency>
            <dependency>
                <groupId>org.jgrapht</groupId>
                <artifactId>jgrapht-io</artifactId>
                <version>1.2.0</version>
            </dependency>
            <dependency>
                <groupId>org.jgrapht</groupId>
                <artifactId>jgrapht-ext</artifactId>
                <version>1.2.0</version>
            </dependency>
            <!--			<dependency>-->
            <!--				<groupId>org.gephi</groupId>-->
            <!--				<artifactId>gephi-toolkit</artifactId>-->
            <!--				<version>0.9.2</version>-->
            <!--			</dependency>-->

            <!-- Apache Calcite -->
            <dependency>
                <groupId>org.apache.calcite</groupId>
                <artifactId>calcite-core</artifactId>
                <version>1.16.0</version>
            </dependency>

            <!-- Shapeless lib -->
            <dependency>
                <groupId>com.chuusai</groupId>
                <artifactId>shapeless_${scala.binary.version}</artifactId>
                <version>2.3.3</version>
            </dependency>

            <!-- OWL API -->
            <dependency>
                <groupId>net.sourceforge.owlapi</groupId>
                <artifactId>owlapi-api</artifactId>
                <version>${owlapi.version}</version>
            </dependency>
            <dependency>
                <groupId>net.sourceforge.owlapi</groupId>
                <artifactId>owlapi-apibinding</artifactId>
                <version>${owlapi.version}</version>
            </dependency>
            <dependency>
                <groupId>net.sourceforge.owlapi</groupId>
                <artifactId>owlapi-impl</artifactId>
                <version>${owlapi.version}</version>
            </dependency>
            <dependency>
                <groupId>net.sourceforge.owlapi</groupId>
                <artifactId>owlapi-parsers</artifactId>
                <version>${owlapi.version}</version>
            </dependency>

            <dependency>
                <groupId>com.google.inject</groupId>
                <artifactId>guice</artifactId>
                <version>4.0</version>
            </dependency>
            <dependency>
                <groupId>com.google.inject.extensions</groupId>
                <artifactId>guice-assistedinject</artifactId>
                <version>4.0</version>
            </dependency>
            <dependency>
                <groupId>com.google.inject.extensions</groupId>
                <artifactId>guice-multibindings</artifactId>
                <version>4.0</version>
            </dependency>

            <dependency>
                <groupId>net.sourceforge.owlapi</groupId>
                <artifactId>org.semanticweb.hermit</artifactId>
                <version>1.4.5.519</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.codehaus.woodstox</groupId>
                        <artifactId>woodstox-core-asl</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>net.sourceforge.owlapi</groupId>
                        <artifactId>owlapi-distribution</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>


            <!-- Test -->
            <!-- <dependency> -->
            <!-- <groupId>org.specs</groupId> -->
            <!-- <artifactId>specs</artifactId> -->
            <!-- <version>1.2.5</version> -->
            <!-- <exclusions> -->
            <!-- <exclusion> -->
            <!-- <groupId>org.scalatest</groupId> -->
            <!-- <artifactId>scalatest</artifactId> -->
            <!-- </exclusion> -->
            <!-- </exclusions> -->
            <!-- </dependency> -->

            <!-- Benchmarking BSBM -->
            <dependency>
                <groupId>org.aksw.bsbm</groupId>
                <artifactId>bsbm-core</artifactId>
                <version>3.1.4</version>
                <scope>test</scope>
            </dependency>


            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.scalatest</groupId>
                <artifactId>scalatest_${scala.binary.version}</artifactId>
                <version>3.1.4</version>
            </dependency>
            <dependency>
                <groupId>org.scalatestplus</groupId>
                <artifactId>junit-4-12_${scala.binary.version}</artifactId>
                <version>3.1.4.0</version>
            </dependency>
            <dependency>
                <groupId>com.vladsch.flexmark</groupId>
                <artifactId>flexmark-all</artifactId>
                <version>0.36.8</version>
            </dependency>

            <!--            <dependency>-->
            <!--                <groupId>org.scalatest</groupId>-->
            <!--                <artifactId>scalatest-funsuite_${scala.binary.version}</artifactId>-->
            <!--                <version>3.2.5</version>-->
            <!--                <scope>test</scope>-->
            <!--            </dependency>-->
            <!--            <dependency>-->
            <!--                <groupId>org.scalatest</groupId>-->
            <!--                <artifactId>scalatest-flatspec_${scala.binary.version}</artifactId>-->
            <!--                <version>3.2.5</version>-->
            <!--                <scope>test</scope>-->
            <!--            </dependency>-->
            <!--            <dependency>-->
            <!--                <groupId>org.scalatest</groupId>-->
            <!--                <artifactId>scalatest-shouldmatchers_${scala.binary.version}</artifactId>-->
            <!--                <version>3.2.5</version>-->
            <!--                <scope>test</scope>-->
            <!--            </dependency>-->


            <dependency>
                <groupId>org.specs2</groupId>
                <artifactId>specs2-core_${scala.binary.version}</artifactId>
                <version>4.10.5</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.specs2</groupId>
                <artifactId>specs2-junit_${scala.binary.version}</artifactId>
                <version>4.10.5</version>
                <scope>test</scope>
            </dependency>

            <!-- Logging -->
            <dependency>
                <groupId>com.typesafe.scala-logging</groupId>
                <artifactId>scala-logging_${scala.binary.version}</artifactId>
                <version>3.9.2</version>
            </dependency>

            <!-- Guava -->
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${guava.version}</version>
            </dependency>

            <!-- Scopt -->
            <dependency>
                <groupId>com.github.scopt</groupId>
                <artifactId>scopt_${scala.binary.version}</artifactId>
                <version>3.7.0</version>
            </dependency>

            <!-- Config API -->
            <dependency>
                <groupId>com.typesafe</groupId>
                <artifactId>config</artifactId>
                <version>1.4.1</version>
            </dependency>

            <!-- Play -->
            <dependency>
                <groupId>com.typesafe.play</groupId>
                <artifactId>play_${scala.binary.version}</artifactId>
                <version>2.8.2</version>
            </dependency>

            <!-- JSON -->
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>20180130</version>
            </dependency>

            <dependency>
                <groupId>it.unimi.dsi</groupId>
                <artifactId>fastutil</artifactId>
                <version>8.1.0</version>
            </dependency>

            <!-- FasterXML -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.10.5.1</version>
            </dependency>

            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.10.4</version>
            </dependency>

            <dependency>
                <groupId>com.fasterxml.jackson.module</groupId>
                <artifactId>jackson-module-scala_${scala.binary.version}</artifactId>
                <version>2.10.4</version>
            </dependency>

            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>2.10.4</version>
            </dependency>

            <!-- slf4j Logger dependencies -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.30</version>
            </dependency>

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


            <dependency>
                <groupId>org.eclipse.rdf4j</groupId>
                <artifactId>rdf4j-queryparser-sparql</artifactId>
                <version>${rdf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.rdf4j</groupId>
                <artifactId>rdf4j-repository-api</artifactId>
                <version>${rdf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.rdf4j</groupId>
                <artifactId>rdf4j-sail-memory</artifactId>
                <version>${rdf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.rdf4j</groupId>
                <artifactId>rdf4j-repository-sail</artifactId>
                <version>${rdf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.rdf4j</groupId>
                <artifactId>rdf4j-queryparser-api</artifactId>
                <version>${rdf4j.version}</version>
            </dependency>

            <!-- Amazon AWS S3 -->
            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-s3</artifactId>
                <version>1.11.882</version>
            </dependency>

            <!-- MySQL JDBC connector -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.22</version>
            </dependency>

            <dependency>
                <groupId>com.ibm.sparktc</groupId>
                <artifactId>spark-bench_2.12</artifactId>
                <version>3.0.1_0.4.0-RELEASE</version>
            </dependency>

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-rdf-jena</artifactId>
                <version>0.5.0</version>
            </dependency>

            <!-- Scala HTTP wrapper -->
            <dependency>
                <groupId>org.scalaj</groupId>
                <artifactId>scalaj-http_${scala.binary.version}</artifactId>
                <version>2.4.2</version>
            </dependency>

            <!-- JSQL parser -->
            <!-- have to stick to 3.2 for now because Ontop does use 3.x and 4.o has some non-compatible changes -->
            <dependency>
                <groupId>com.github.jsqlparser</groupId>
                <artifactId>jsqlparser</artifactId>
                <version>3.2</version>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <reporting>
        <plugins>

            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <artifactId>maven-project-info-reports-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jdepend-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
            </plugin>

        </plugins>

    </reporting>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>com.amashchenko.maven.plugin</groupId>
                <artifactId>gitflow-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.scalatest</groupId>
                <artifactId>scalatest-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.eluder.coveralls</groupId>
                <artifactId>coveralls-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
            </plugin>
        </plugins>


        <pluginManagement>
            <plugins>
                <!-- Scala Maven -->
                <plugin>
                    <groupId>net.alchim31.maven</groupId>
                    <artifactId>scala-maven-plugin</artifactId>
                    <version>4.4.0</version>
                    <configuration>
                        <forceAggregate>true</forceAggregate>
                        <aggregateDirectOnly>false</aggregateDirectOnly>
                    </configuration>
                    <executions>
                        <execution>
                            <id>scala-compile-first</id>
                            <phase>process-resources</phase>
                            <goals>
                                <goal>add-source</goal>
                                <goal>compile</goal>
                                <!-- <goal>testCompile</goal> -->
                            </goals>
                            <configuration>
                                <scalaVersion>${scala.version}</scalaVersion>
                                <checkMultipleScalaVersions>true</checkMultipleScalaVersions>
                                <!--failOnMultipleScalaVersions>true</failOnMultipleScalaVersions-->
                                <recompileMode>incremental</recompileMode>
                                <useZincServer>true</useZincServer>
                                <args>
                                    <arg>-target:jvm-1.8</arg>
                                    <arg>-unchecked</arg>
                                    <arg>-deprecation</arg>
                                    <arg>-feature</arg>
                                    <arg>-dependencyfile</arg>
                                    <arg>${project.build.directory}/.scala_dependencies</arg>
                                    <arg>-Xmax-classfile-name</arg>
                                    <arg>128</arg>
                                </args>
                                <jvmArgs>
                                    <jvmArg>-Xss10m</jvmArg>
                                    <jvmArg>-Xms1024m</jvmArg>
                                    <jvmArg>-Xmx1024m</jvmArg>
                                    <jvmArg>-XX:ReservedCodeCacheSize=${CodeCacheSize}</jvmArg>
                                </jvmArgs>
                                <!--<javacArgs> -->
                                <!--<javacArg>-source</javacArg> -->
                                <!--<javacArg>${java.version}</javacArg> -->
                                <!--<javacArg>-target</javacArg> -->
                                <!--<javacArg>${java.version}</javacArg> -->
                                <!--<javacArg>-Xlint:all,-serial,-path</javacArg> -->
                                <!--</javacArgs> -->

                            </configuration>
                        </execution>
                        <execution>
                            <id>scala-test-compile</id>
                            <phase>process-test-resources</phase>
                            <goals>
                                <goal>testCompile</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>doc-jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>


                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <source>${maven.compiler.source}</source>
                        <target>${maven.compiler.target}</target>
                        <encoding>${project.build.sourceEncoding}</encoding>
                    </configuration>
                </plugin>

                <!-- Surefire -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.20.1</version>

                    <configuration>
                        <useFile>false</useFile>
                        <disableXmlReport>true</disableXmlReport>
                        <!--						<threadCountSuites>4</threadCountSuites>-->
                        <!-- If you have classpath issue like NoDefClassError,... -->
                        <!-- useManifestOnlyJar>false</useManifestOnlyJar -->
                        <includes>
                            <include>**/*Test.*</include>
                            <include>**/*Suite.*</include>
                        </includes>
                        <skipTests>true</skipTests>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>2.9</version>
                    <configuration>
                        <dependencyDetailsEnabled>false</dependencyDetailsEnabled>
                        <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-report-plugin</artifactId>
                    <version>2.20</version>
                </plugin>

                <!-- Scalatest -->
                <plugin>
                    <groupId>org.scalatest</groupId>
                    <artifactId>scalatest-maven-plugin</artifactId>
                    <version>2.0.2</version>
                    <configuration>
                        <tagsToExclude>net.sansa_stack.test.conformance.IntegrationTestSuite</tagsToExclude>
                        <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
                        <junitxml>.</junitxml>
                        <filereports>SANSA-${project.artifactId}-Tests.txt</filereports>
                        <htmlreporters>${project.build.directory}/html/scalatest</htmlreporters>
                        <testFailureIgnore>false</testFailureIgnore>
                    </configuration>
                    <executions>
                        <execution>
                            <id>test</id>
                            <goals>
                                <goal>test</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

                <!-- <plugin> -->
                <!-- <groupId>org.scalatest</groupId> -->
                <!-- <artifactId>scalatest-maven-plugin</artifactId> -->
                <!-- <version>2.0.0</version> -->
                <!-- <configuration> -->
                <!-- <tagsToExclude>net.sansa_stack.test.conformance.IntegrationTestSuite</tagsToExclude> -->
                <!-- </configuration> -->
                <!-- </plugin> -->


                <!-- Legacy scalatest dependency - remove if the newer one works -->
                <!-- <plugin> -->
                <!-- <groupId>org.scalatest</groupId> -->
                <!-- <artifactId>scalatest-maven-plugin</artifactId> -->
                <!-- <version>1.0</version> -->
                <!-- <configuration> -->
                <!-- <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory> -->
                <!-- <junitxml>.</junitxml> -->
                <!-- <filereports>SANSA-RDF-Tests.txt</filereports> -->
                <!-- </configuration> -->
                <!-- <executions> -->
                <!-- <execution> -->
                <!-- <id>test</id> -->
                <!-- <goals> -->
                <!-- <goal>test</goal> -->
                <!-- </goals> -->
                <!-- </execution> -->
                <!-- </executions> -->
                <!-- </plugin> -->

                <!-- Gitflow -->
                <plugin>
                    <groupId>com.amashchenko.maven.plugin</groupId>
                    <artifactId>gitflow-maven-plugin</artifactId>
                    <version>1.15.1</version>
                    <configuration>
                        <!--
                            <installProject>false</installProject>
                            <pushRemote>false</pushRemote>
                        -->
                        <gitFlowConfig>
                            <versionTagPrefix>v</versionTagPrefix>
                            <!-- These values should be defaults -->
                            <!-- <productionBranch>master</productionBranch> -->
                            <!-- <developmentBranch>develop</developmentBranch> -->
                            <!-- <featureBranchPrefix>feature/</featureBranchPrefix> -->
                            <!-- <releaseBranchPrefix>release/</releaseBranchPrefix> -->
                            <!-- <hotfixBranchPrefix>hotfix/</hotfixBranchPrefix> -->
                            <!-- <supportBranchPrefix>support/</supportBranchPrefix> -->
                            <!-- <origin>origin</origin> -->
                        </gitFlowConfig>
                    </configuration>
                </plugin>


                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>versions-maven-plugin</artifactId>
                    <version>2.5</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>3.0.0-M1</version>
                    <executions>
                        <execution>
                            <id>enforce-versions</id>
                            <goals>
                                <goal>enforce</goal>
                            </goals>
                            <configuration>
                                <rules>
                                    <requireMavenVersion>
                                        <version>${maven.version}</version>
                                    </requireMavenVersion>
                                    <!--<requireJavaVersion> -->
                                    <!--<version>${java.version}</version> -->
                                    <!--</requireJavaVersion> -->
                                    <bannedDependencies>
                                        <excludes>
                                            <!-- Akka depends on io.netty:netty, which puts classes under
                                                the org.jboss.netty package. This conflicts with the classes in org.jboss.netty:netty
                                                artifact, so we have to ban that artifact here. In Netty 4.x, the classes
                                                are under the io.netty package, so it's fine for us to depend on both io.netty:netty
                                                and io.netty:netty-all. -->
                                            <exclude>org.jboss.netty</exclude>
                                            <exclude>org.codehaus.groovy</exclude>
                                        </excludes>
                                        <searchTransitive>true</searchTransitive>
                                    </bannedDependencies>
                                </rules>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>3.0.0</version>
                    <executions>
                        <execution>
                            <id>add-source</id>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>add-source</goal>
                            </goals>
                            <configuration>
                                <sources>
                                    <source>src/main/scala_${scala.binary.version}</source>
                                </sources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>com.versioneye</groupId>
                    <artifactId>versioneye-maven-plugin</artifactId>
                    <version>3.11.4</version>
                </plugin>


                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>3.0.1</version>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>jar-no-fork</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <artifactId>jdeb</artifactId>
                    <groupId>org.vafer</groupId>
                    <version>1.8</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>3.1.2</version>
                    <executions>
                        <execution>
                            <phase>prepare-package</phase>
                            <!-- <phase>package</phase> -->
                            <goals>
                                <goal>copy-dependencies</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <!-- <useBaseVersion>false</useBaseVersion> -->
                        <overWriteReleases>false</overWriteReleases>
                        <overWriteSnapshots>true</overWriteSnapshots>
                        <includeScope>runtime</includeScope>
                        <outputDirectory>${project.build.directory}/lib</outputDirectory>
                    </configuration>
                </plugin>


                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>3.1.1</version>
                    <configuration>
                        <failOnError>false</failOnError>
                    </configuration>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>


                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>3.2.4</version>
                    <executions>
                        <!-- Run shade goal on package phase -->
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <shadedArtifactAttached>true</shadedArtifactAttached>
                                <shadedClassifierName>jar-with-dependencies</shadedClassifierName>
                                <filters>
                                    <filter>
                                        <artifact>*:*</artifact>
                                        <excludes>
                                            <exclude>META-INF/*.SF</exclude>
                                            <exclude>META-INF/*.DSA</exclude>
                                            <exclude>META-INF/*.RSA</exclude>
                                        </excludes>
                                    </filter>
                                </filters>
                                <transformers>
                                    <transformer
                                            implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                                    <!-- add Main-Class to manifest file -->
                                    <!-- <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> -->
                                    <!-- <mainClass>com.mkyong.core.utils.App</mainClass> -->
                                    <!-- </transformer> -->
                                </transformers>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>

                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>

                <!--
                                <plugin>
                                    <artifactId>maven-dependency-plugin</artifactId>
                                    <version>3.1.2</version>
                                </plugin>
                -->

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.2.0</version>
                </plugin>


                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.6</version>
                    <configuration>
                        <skipDeploy>true</skipDeploy>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>cobertura-maven-plugin</artifactId>
                    <version>2.7</version>
                    <configuration>
                        <format>xml</format>
                        <maxmem>256m</maxmem>
                        <!-- aggregated reports for multi-module projects -->
                        <aggregate>true</aggregate>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>jdepend-maven-plugin</artifactId>
                    <version>2.0</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.22.0</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>integration-test</goal>
                                <goal>verify</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-pmd-plugin</artifactId>
                    <version>3.13.0</version>
                    <configuration>
                        <linkXRef>true</linkXRef>
                        <sourceEncoding>utf-8</sourceEncoding>
                        <minimumTokens>100</minimumTokens>
                        <targetJdk>1.8</targetJdk>
                    </configuration>
                </plugin>


                <!-- Scalastyle -->
                <plugin>
                    <groupId>org.scalastyle</groupId>
                    <artifactId>scalastyle-maven-plugin</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <verbose>false</verbose>
                        <failOnViolation>true</failOnViolation>
                        <includeTestSourceDirectory>true</includeTestSourceDirectory>
                        <failOnWarning>false</failOnWarning>
                        <sourceDirectory>${project.basedir}/src/main/scala</sourceDirectory>
                        <testSourceDirectory>${project.basedir}/src/test/scala</testSourceDirectory>
                        <!-- we use a central config located in the root directory -->
                        <configLocation>${scalastyle.config.path}</configLocation>
                        <outputFile>${project.basedir}/scalastyle-output.xml</outputFile>
                        <outputEncoding>UTF-8</outputEncoding>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>check</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>


                <!--This plugin's configuration is used to store Eclipse m2e settings
                    only. It has no influence on the Maven build itself. -->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>
                                            net.alchim31.maven
                                        </groupId>
                                        <artifactId>
                                            scala-maven-plugin
                                        </artifactId>
                                        <versionRange>
                                            [3.3.1,)
                                        </versionRange>
                                        <goals>
                                            <goal>testCompile</goal>
                                            <goal>compile</goal>
                                            <goal>add-source</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore></ignore>
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>


                <plugin>
                    <groupId>org.eluder.coveralls</groupId>
                    <artifactId>coveralls-maven-plugin</artifactId>
                    <version>4.3.0</version>
                    <configuration>
                        <repoToken>${env.COVERALLS_TOKEN}</repoToken>
                        <sourceEncoding>UTF-8</sourceEncoding>
                        <sourceDirectories>
                            <sourceDirectory>${basedir}/src/main/scala</sourceDirectory>
                        </sourceDirectories>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>0.8.4</version>
                    <executions>
                        <execution>
                            <id>prepare-agent</id>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                        </execution>
                    </executions>

                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <distributionManagement>
        <snapshotRepository>
            <id>maven.aksw.snapshots</id>
            <name>AKSW Snapshot Repository</name>
            <url>https://maven.aksw.org/archiva/repository/snapshots</url>
        </snapshotRepository>
    </distributionManagement>

    <!--
    <pluginRepositories>
        <pluginRepository>
            <id>maven.aksw.internal</id>
            <name>AKSW Release Repository</name>
            <url>https://maven.aksw.org/archiva/repository/internal</url>
            <releases>
                <enabled>true</enabled>
            </releases>
        </pluginRepository>
    </pluginRepositories>
    -->

    <repositories>
        <!--
            <repository>
                <id>oss-sonatype</id>
                <name>oss-sonatype</name>
                <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <releases>
                    <enabled>false</enabled>
                </releases>
        </repository>
        -->
        <repository>
            <id>oss-sonatype-releases</id>
            <name>oss-sonatype</name>
            <url>https://oss.sonatype.org/content/repositories/releases/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>

        <!--
            <repository>
                <id>apache-snapshot</id>
                <name>Apache repository (snapshots)</name>
                <url>https://repository.apache.org/content/repositories/snapshots/</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <releases>
                    <enabled>false</enabled>
                </releases>
        </repository>
        -->
        <repository>
            <id>maven.aksw.snapshots</id>
            <name>AKSW Snapshot Repository</name>
            <url>https://maven.aksw.org/archiva/repository/snapshots</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>

        <repository>
            <id>maven.aksw.internal</id>
            <name>AKSW Release Repository</name>
            <url>https://maven.aksw.org/archiva/repository/internal</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
        <!--
        <repository>
            <id>netbeans</id>
            <name>mvnrepository</name>
            <url>https://bits.netbeans.org/nexus/content/groups/netbeans/</url>
	</repository>
	-->
    </repositories>

    <profiles>

        <!-- switch Scala version to 2.12 -->
        <profile>
            <id>scala-2.12</id>
            <properties>
                <scala.version>2.12.10</scala.version>
                <scala.binary.version>2.12</scala.binary.version>
            </properties>
            <build>
                <pluginManagement>
                    <plugins>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>


        <profile>
            <id>source</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>javadoc</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>


        <!-- the profile used for deployment to Sonatype Maven repository -->
        <profile>
            <id>release</id>
            <distributionManagement>
                <repository>
                    <id>ossrh</id>
                    <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
                </repository>
            </distributionManagement>
            <build>
                <plugins>
                    <!-- <plugin> -->
                    <!-- <groupId>net.alchim31.maven</groupId> -->
                    <!-- <artifactId>scala-maven-plugin</artifactId> -->
                    <!-- <version>3.2.2</version> -->
                    <!-- <executions> -->
                    <!-- <execution> -->
                    <!-- <goals> -->
                    <!-- <goal>compile</goal> -->
                    <!-- <goal>testCompile</goal> -->
                    <!-- </goals> -->
                    <!-- <configuration> -->
                    <!-- <scalaVersion>${scala.version}</scalaVersion> -->
                    <!-- <recompileMode>incremental</recompileMode> -->
                    <!-- <useZincServer>true</useZincServer> -->
                    <!-- <args> -->
                    <!-- <arg>-unchecked</arg> -->
                    <!-- <arg>-deprecation</arg> -->
                    <!-- <arg>-feature</arg> -->
                    <!-- <arg>-dependencyfile</arg> -->
                    <!-- <arg>${project.build.directory}/.scala_dependencies</arg> -->
                    <!-- <arg>-Xmax-classfile-name</arg> -->
                    <!-- <arg>128</arg> -->
                    <!-- </args> -->
                    <!-- <jvmArgs> -->
                    <!-- <jvmArg>-Xss5m</jvmArg> -->
                    <!-- <jvmArg>-Xms1024m</jvmArg> -->
                    <!-- <jvmArg>-Xmx1024m</jvmArg> -->
                    <!-- <jvmArg>-XX:PermSize=${PermGen}</jvmArg> -->
                    <!-- <jvmArg>-XX:MaxPermSize=${MaxPermGen}</jvmArg> -->
                    <!-- <jvmArg>-XX:ReservedCodeCacheSize=${CodeCacheSize}</jvmArg> -->
                    <!-- </jvmArgs> -->
                    <!-- </configuration> -->
                    <!-- </execution> -->
                    <!-- <execution> -->
                    <!-- <id>attach-javadocs</id> -->
                    <!-- <goals> -->
                    <!-- <goal>doc-jar</goal> -->
                    <!-- </goals> -->
                    <!-- </execution> -->
                    <!-- </executions> -->
                    <!-- </plugin> -->

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>1.6</version>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                                <configuration>
                                    <keyname>AKSW</keyname>
                                    <passphraseServerId>${gpg.keyname}</passphraseServerId>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.sonatype.plugins</groupId>
                        <artifactId>nexus-staging-maven-plugin</artifactId>
                        <version>1.6.8</version>
                        <extensions>true</extensions>
                        <configuration>
                            <serverId>ossrh</serverId>
                            <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                            <autoReleaseAfterClose>true</autoReleaseAfterClose>
                        </configuration>
                    </plugin>

                </plugins>
            </build>
        </profile>


        <!-- Profile to release to our public AKSW maven repository -->
        <!-- It is still a public release therefore calling it 'release-internal' seems inadequate -->
        <profile>
            <id>release-aksw</id>
            <distributionManagement>
                <repository>
                    <id>maven.aksw.internal</id>
                    <url>http://maven.aksw.org/repository/internal</url>
                </repository>
            </distributionManagement>

            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>spark-3</id>
            <properties>
                <spark.version>3.0.1</spark.version>
            </properties>
        </profile>

        <profile>
            <id>hadoop-3.2</id>
            <properties>
                <hadoop.version>3.2.1</hadoop.version>
            </properties>
        </profile>

        <profile>
            <id>hadoop-2.8</id>
            <!-- Default hadoop profile. Uses global properties. -->
        </profile>

        <!--
          These empty profiles are available in some sub-modules. Declare them here so that
          maven does not complain when they're provided on the command line for a sub-module
          that does not have them.
        -->
        <profile>
            <id>hadoop-provided</id>
            <properties>
                <hadoop.deps.scope>provided</hadoop.deps.scope>
            </properties>
        </profile>

        <profile>
            <id>spark-provided</id>
            <properties>
                <spark.deps.scope>provided</spark.deps.scope>
            </properties>
        </profile>

        <profile>
            <id>flink-provided</id>
            <properties>
                <flink.deps.scope>provided</flink.deps.scope>
            </properties>
        </profile>

        <!-- Should be used to create standalone distributions that can be deployed to Spark or Flink cluster -->
        <profile>
            <id>dist</id>
        </profile>

        <profile>
            <id>doclint-java8-disable</id>
            <activation>
                <jdk>[1.8,)</jdk>
            </activation>

            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                                <configuration>
                                    <failOnError>false</failOnError>
                                </configuration>
                            </execution>
                        </executions>
                        <configuration>
                            <doclint>none</doclint>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>osx-x86_64-cpu</id>
            <activation>
                <os>
                    <family>mac</family>
                    <arch>x86_64</arch>
                </os>
            </activation>
            <properties>
                <platform>osx-x86_64-cpu</platform>
            </properties>
        </profile>
        <profile>
            <id>linux-x86_64-cpu</id>
            <activation>
                <os>
                    <family>linux</family>
                </os>
            </activation>
            <properties>
                <platform>linux-x86_64-cpu</platform>
            </properties>
        </profile>
        <profile>
            <id>linux-x86_64-gpu</id>
            <properties>
                <platform>linux-x86_64-gpu</platform>
            </properties>
        </profile>

        <profile>
            <id>root-dir</id>
            <activation>
                <file>
                    <exists>${project.basedir}/scalastyle-config.xml</exists>
                </file>
            </activation>
            <properties>
                <scalastyle.config.path>${project.basedir}/scalastyle-config.xml</scalastyle.config.path>
            </properties>
        </profile>
        <profile>
            <id>child-dir</id>
            <activation>
                <file>
                    <exists>${project.basedir}/../lib</exists>
                </file>
            </activation>
            <properties>
                <scalastyle.config.path>${project.basedir}/../scalastyle-config.xml</scalastyle.config.path>
            </properties>
        </profile>
        <profile>
            <id>child-child-dir</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <scalastyle.config.path>${project.basedir}/../../scalastyle-config.xml</scalastyle.config.path>
            </properties>
        </profile>

    </profiles>


</project>
