<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache</groupId>
        <artifactId>apache</artifactId>
        <version>21</version>
    </parent>
    <groupId>org.apache.tinkerpop</groupId>
    <artifactId>tinkerpop</artifactId>
    <version>3.4.1</version>
    <packaging>pom</packaging>
    <name>Apache TinkerPop</name>
    <description>A Graph Computing Framework</description>
    <url>http://tinkerpop.apache.org/</url>
    <mailingLists>
        <mailingList>
            <name>Users</name>
            <subscribe>http://groups.google.com/group/gremlin-users</subscribe>
            <unsubscribe>http://groups.google.com/group/gremlin-users</unsubscribe>
            <archive>http://groups.google.com/group/gremlin-users/topics</archive>
        </mailingList>
        <mailingList>
            <name>Developers</name>
            <subscribe>dev-subscribe@tinkerpop.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@tinkerpop.apache.org</unsubscribe>
            <archive>dev-digest-subscribe@tinkerpop.apache.org</archive>
        </mailingList>
    </mailingLists>
    <inceptionYear>2013</inceptionYear>
    <licenses>
        <license>
            <name>Apache 2</name>
            <url>http://www.opensource.org/licenses/Apache-2.0</url>
        </license>
    </licenses>
    <organization>
        <name>Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
    </organization>
    <developers>
        <developer>
            <name>Marko A. Rodriguez</name>
            <email>okram@apache.org</email>
            <url>http://markorodriguez.com</url>
        </developer>
        <developer>
            <name>Stephen Mallette</name>
            <email>spmallette@apache.org</email>
            <url>http://stephen.genoprime.com</url>
        </developer>
        <developer>
            <name>Daniel Kuppitz</name>
            <email>dkuppitz@apache.org</email>
            <url>http://gremlin.guru</url>
        </developer>
    </developers>
    <contributors>
        <contributor>
            <name>Joshua Shinavier</name>
            <email>josh@fortytwo.net</email>
            <url>http://fortytwo.net</url>
        </contributor>
        <contributor>
            <name>Michael Pollmeier</name>
            <email>michael@michaelpollmeier.com</email>
            <url>http://michaelpollmeier.com</url>
        </contributor>
        <contributor>
            <name>Pieter Martin</name>
            <email>pieter.martin@gmail.com</email>
            <url>http://umlg.org</url>
        </contributor>
        <contributor>
            <name>Matt Frantz</name>
            <email>matthew.h.frantz@gmail.com</email>
            <url>https://github.com/mhfrantz</url>
        </contributor>
        <contributor>
            <name>Jason Plurad</name>
            <email>pluradj@gmail.com</email>
            <url>https://github.com/pluradj</url>
        </contributor>
        <contributor>
            <name>Dylan Millikin</name>
            <email>dylan.millikin@gmail.com</email>
            <url>https://github.com/PommeVerte</url>
        </contributor>
        <contributor>
            <name>Ted Wilmes</name>
            <email>twilmes@gmail.com</email>
            <url>https://github.com/twilmes</url>
        </contributor>
        <contributor>
            <name>Harsh Thakkar</name>
            <email>harsh9t@gmail.com</email>
            <organization>University of Bonn</organization>
            <organizationUrl>http://harshthakkar.in</organizationUrl>
        </contributor>
        <contributor>
            <name>Dharmen Punjani</name>
            <email>dharmen.punjani@gmail.com</email>
            <organization>National and Kapodistrian University of Athens</organization>
            <organizationUrl>http://wdaqua.eu/students/dharmen-punjani</organizationUrl>
        </contributor>
    </contributors>
    <prerequisites>
        <maven>3.2.5</maven>
    </prerequisites>
    <modules>
        <module>gremlin-shaded</module>
        <module>gremlin-core</module>
        <module>gremlin-test</module>
        <module>gremlin-groovy</module>
        <module>tinkergraph-gremlin</module>
        <module>gremlin-javascript</module>
        <module>gremlin-python</module>
        <module>gremlin-dotnet</module>
        <module>hadoop-gremlin</module>
        <module>spark-gremlin</module>
        <module>neo4j-gremlin</module>
        <module>sparql-gremlin</module>
        <module>gremlin-driver</module>
        <module>gremlin-console</module>
        <module>gremlin-server</module>
        <module>gremlin-archetype</module>
        <module>gremlin-tools</module>
    </modules>
    <scm>
        <connection>scm:git:git@github.com:apache/tinkerpop.git</connection>
        <developerConnection>scm:git:git@github.com:apache/tinkerpop.git</developerConnection>
        <url>https://github.com/apache/tinkerpop</url>
    </scm>
    <properties>
        <commons.configuration.version>1.10</commons.configuration.version>
        <commons.lang.version>2.6</commons.lang.version>
        <commons.lang3.version>3.8.1</commons.lang3.version>
        <groovy.version>2.5.6</groovy.version>
        <hadoop.version>2.7.2</hadoop.version>
        <java.tuples.version>1.2</java.tuples.version>
        <javadoc-plugin.version>2.10.4</javadoc-plugin.version>
        <jcabi.version>1.1</jcabi.version>
        <log4j.version>1.2.17</log4j.version>
        <metrics.version>3.0.2</metrics.version>
        <netty.version>4.1.25.Final</netty.version>
        <slf4j.version>1.7.25</slf4j.version>
        <snakeyaml.version>1.15</snakeyaml.version>
        <spark.version>2.4.0</spark.version>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <skipIntegrationTests>true</skipIntegrationTests>

        <!--
        This file will come from the root of each modules test/resources/ directories. log4j-silent.properties will
        turn off all logging possible while still allowing tests to pass. log4j-test.properties will be more verbose
        in its output.
        -->
        <log4j-test.properties>file:target/test-classes/log4j-test.properties</log4j-test.properties>
        <log4j-silent.properties>file:target/test-classes/log4j-silent.properties</log4j-silent.properties>

        <muteTestLogs>false</muteTestLogs>

        <!-- By default API checks are not run. Modules can opt in by setting this property to false in their poms. -->
        <revapi.skip>true</revapi.skip>
    </properties>
    <build>
        <directory>${basedir}/target</directory>
        <plugins>
            <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-compiler-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>1.4.1</version>
                <executions>
                    <execution>
                        <id>enforce-all</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <DependencyConvergence/>
                                <requireJavaVersion>
                                    <version>[1.8.0-40,)</version>
                                </requireJavaVersion>
                                <requireMavenVersion>
                                    <version>[3.2.5,)</version>
                                </requireMavenVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.0.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                        <configuration>
                            <excludes>
                                <exclude>gremlin-dotnet/src/obj/**</exclude>
                                <exclude>gremlin-dotnet/src/_site/**</exclude>
                                <exclude>gremlin-javascript/src/main/javascript/gremlin-javascript/node_modules/**</exclude>
                            </excludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <additionalparam>-Xdoclint:none</additionalparam>
                    <tags>
                        <tag>
                            <name>example</name>
                            <placement>aoptcmf</placement>
                            <head>Example:</head>
                        </tag>
                    </tags>
                </configuration>
                <executions>
                    <execution>
                        <id>aggregate-in-site-lifecycle</id>
                        <goals>
                            <goal>aggregate</goal>
                        </goals>
                        <phase>site</phase>
                        <configuration>
                            <additionalparam>-Xdoclint:none</additionalparam>
                            <includeDependencySources>true</includeDependencySources>
                            <dependencySourceIncludes>
                                <dependencySourceInclude>org.apache.tinkerpop:*</dependencySourceInclude>
                            </dependencySourceIncludes>
                            <overview>${basedir}/docs/javadoc/overview.html</overview>
                            <quiet>true</quiet>
                        </configuration>
                    </execution>
                    <execution>
                        <id>attach-javadoc</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
                <version>1.4</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>create</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>3.0.0</version>
                <executions>
                    <execution>
                        <!-- source: https://stackoverflow.com/a/39139979/6753576 -->
                        <!-- sets the only.when.is.snapshot.used property to true if SNAPSHOT was used, 
                            to the project version otherwise -->
                        <id>build-helper-regex-is-snapshot-used</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>regex-property</goal>
                        </goals>
                        <configuration>
                            <name>only.when.is.snapshot.used</name>
                            <value>${project.version}</value>
                            <regex>.*-SNAPSHOT</regex>
                            <replacement>true</replacement>
                            <failIfNoMatch>false</failIfNoMatch>
                        </configuration>
                    </execution>
                    <execution>
                        <!-- sets the only.when.is.prerelease.version property to true if a prerelease version was used, 
                            to the project version otherwise -->
                        <id>build-helper-regex-is-prerelease-version</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>regex-property</goal>
                        </goals>
                        <configuration>
                            <name>only.when.is.prerelease.version</name>
                            <value>${project.version}</value>
                            <regex>.*-.*</regex>
                            <replacement>true</replacement>
                            <failIfNoMatch>false</failIfNoMatch>
                        </configuration>
                    </execution>
                    <!-- Needed to figure out the version components when reading revapi API check config below -->
                    <execution>
                        <id>parse-version</id>
                        <goals>
                            <goal>parse-version</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <version>${project.version}</version>
                            <hash>${buildNumber}</hash>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <version>0.12</version>
                <executions>
                    <execution>
                        <id>rat-checks</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <excludeSubProjects>false</excludeSubProjects>
                    <excludes>
                        <exclude>.mailmap</exclude>
                        <exclude>.travis.yml</exclude>
                        <exclude>.travis.*.sh</exclude>
                        <exclude>.dockerignore</exclude>
                        <exclude>**/.classpath</exclude>
                        <exclude>**/.project</exclude>
                        <exclude>**/.settings/**</exclude>
                        <exclude>.repository/**</exclude>
                        <exclude>docs/static/**</exclude>
                        <exclude>**/target/**</exclude>
                        <exclude>data/*.txt</exclude>
                        <exclude>**/*.kryo</exclude>
                        <exclude>**/*.iml</exclude>
                        <exclude>**/*.json</exclude>
                        <exclude>**/*.xml</exclude>
                        <exclude>**/*.ldjson</exclude>
                        <exclude>**/*.graffle</exclude>
                        <exclude>**/goal.txt</exclude>
                        <exclude>**/src/main/resources/META-INF/services/**</exclude>
                        <exclude>**/src/test/resources/META-INF/services/**</exclude>
                        <exclude>**/src/test/resources/org/apache/tinkerpop/gremlin/console/groovy/plugin/script-customizer-*.groovy</exclude>
                        <exclude>**/src/test/resources/org/apache/tinkerpop/gremlin/jsr223/script-customizer-*.groovy</exclude>
                        <exclude>**/src/test/resources/org/apache/tinkerpop/gremlin/console/jsr223/script-customizer-*.groovy</exclude>
                        <exclude>**/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/script/*.txt</exclude>
                        <exclude>**/src/main/ext/**</exclude>
                        <exclude>**/src/main/static/**</exclude>
                        <exclude>**/_bsp/**</exclude>
                        <exclude>DEPENDENCIES</exclude>
                        <exclude>**/.glv</exclude>
                        <exclude>bin/gremlin.sh</exclude>
                        <exclude>gremlin-console/bin/gremlin.sh</exclude>
                        <exclude>docs/site/home/css/**</exclude>
                        <exclude>docs/site/home/js/**</exclude>
                        <exclude>**/Debug/**</exclude>
                        <exclude>**/Release/**</exclude>
                        <exclude>**/obj/**</exclude>
                        <exclude>**/*.sln</exclude>
                        <exclude>**/*.user</exclude>
                        <exclude>**/*.csproj</exclude>
                        <exclude>**/.vs/**</exclude>
                        <exclude>**/NuGet.Config</exclude>
                        <exclude>**/*.nuspec</exclude>
                        <exclude>**/*.nuspec.template</exclude>
                        <exclude>**/gremlin-javascript/node_modules/**</exclude>
                        <exclude>**/gremlin-javascript/doc/**</exclude>
                        <exclude>**/node/node_modules/**</exclude>
                        <exclude>**/node/node</exclude>
                        <exclude>**/npm-debug.log</exclude>
                        <exclude>**/_site/**</exclude>
                        <exclude>**/.idea/**</exclude>
                    </excludes>
                    <licenses>
                        <license implementation="org.apache.rat.analysis.license.ApacheSoftwareLicense20"/>
                    </licenses>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.doxia</groupId>
                        <artifactId>doxia-core</artifactId>
                        <version>1.6</version>
                        <exclusions>
                            <exclusion>
                                <groupId>xerces</groupId>
                                <artifactId>xercesImpl</artifactId>
                            </exclusion>
                        </exclusions>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.revapi</groupId>
                <artifactId>revapi-maven-plugin</artifactId>
                <version>0.9.1</version>
                <dependencies>
                    <dependency>
                        <groupId>org.revapi</groupId>
                        <artifactId>revapi-java</artifactId>
                        <version>0.13.0</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <skip>${revapi.skip}</skip>
                    <versionFormat>\d*\.\d*\.\d*.</versionFormat>
                    <analysisConfiguration><![CDATA[
                    {
                      "revapi": {
                        "semver": {
                          "ignore": {
                            "enabled": true,
                            "versionIncreaseAllows": {
                              "major": "breaking",
                              "minor": "breaking",
                              "patch": "nonBreaking"
                            },
                            "passThroughDifferences": ["java.class.nonPublicPartOfAPI"]
                          }
                        }
                      }
                    }
                    ]]></analysisConfiguration>
                    <analysisConfigurationFiles>
                        <configurationFile>
                            <path>${project.basedir}/api-changes.json</path>
                            <roots>
                                <root>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</root>
                            </roots>
                        </configurationFile>
                        <configurationFile>
                            <path>${project.basedir}/api-contents.json</path>
                        </configurationFile>
                    </analysisConfigurationFiles>
                    <failOnMissingConfigurationFiles>false</failOnMissingConfigurationFiles>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- we never use this plugin - disabling helps with speeding up other processing like when using -Dcoverage -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.7.0</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <compilerArgs>
                            <arg>-parameters</arg>
                        </compilerArgs>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.21.0</version>
                    <configuration>
                        <argLine>-Dlog4j.configuration=${log4j-test.properties} -Dbuild.dir=${project.build.directory} -Dis.testing=true
                        </argLine>
                        <excludes>
                            <exclude>**/*IntegrateTest.java</exclude>
                        </excludes>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.21.0</version>
                    <executions>
                        <execution>
                            <id>integration-test</id>
                            <goals>
                                <goal>integration-test</goal>
                            </goals>
                            <configuration>
                                <includes>
                                    <include>**/*IntegrateTest.java</include>
                                </includes>
                                <skipTests>${skipIntegrationTests}</skipTests>
                                <argLine>-Dlog4j.configuration=${log4j-test.properties} -Dhost=localhost -Dport=8182
                                    -Dbuild.dir=${project.build.directory} -Dis.testing=true
                                </argLine>
                                <summaryFile>target/failsafe-reports/failsafe-integration.xml</summaryFile>
                            </configuration>
                        </execution>
                        <execution>
                            <id>verify-integration-test</id>
                            <goals>
                                <goal>verify</goal>
                            </goals>
                            <configuration>
                                <skipTests>${skipIntegrationTests}</skipTests>
                                <summaryFiles>
                                    <summaryFile>target/failsafe-reports/failsafe-integration.xml</summaryFile>
                                </summaryFiles>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.asciidoctor</groupId>
                    <artifactId>asciidoctor-maven-plugin</artifactId>
                    <version>1.5.5</version>
                </plugin>
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>xml-maven-plugin</artifactId>
                    <version>1.0.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${javadoc-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.gmavenplus</groupId>
                    <artifactId>gmavenplus-plugin</artifactId>
                    <version>1.6</version>
                    <configuration>
                        <targetBytecode>1.8</targetBytecode>
                        <invokeDynamic>true</invokeDynamic>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>dockerfile-maven-plugin</artifactId>
                    <version>1.3.7</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <dependencyManagement>
        <dependencies>
            <!-- commons-configuration drags in the old commons-lang. need to update someday -->
            <dependency>
                <groupId>commons-configuration</groupId>
                <artifactId>commons-configuration</artifactId>
                <version>${commons.configuration.version}</version>
                <exclusions>
                    <!-- self-conflict -->
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
                <version>3.2.2</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons.lang3.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-core</artifactId>
                <version>1.2.1</version>
                <exclusions>
                    <!-- self-conflicts -->
                    <exclusion>
                        <groupId>commons-codec</groupId>
                        <artifactId>commons-codec</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-httpclient</groupId>
                        <artifactId>commons-httpclient</artifactId>
                    </exclusion>
                    <!-- conflict with commons-configuration -->
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                    <!-- conflict with TinkerPop tests -->
                    <exclusion>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.codahale.metrics</groupId>
                <artifactId>metrics-core</artifactId>
                <version>${metrics.version}</version>
                <exclusions>
                    <!-- conflict with jcl-over-slf4j-->
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.codahale.metrics</groupId>
                <artifactId>metrics-graphite</artifactId>
                <version>${metrics.version}</version>
                <optional>true</optional>
                <exclusions>
                    <!-- conflict with jcl-over-slf4j-->
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.codahale.metrics</groupId>
                <artifactId>metrics-ganglia</artifactId>
                <version>${metrics.version}</version>
                <optional>true</optional>
                <exclusions>
                    <!-- conflict with jcl-over-slf4j-->
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                    <!-- LGPL licensed - users will need to install this jar manually -->
                    <exclusion>
                        <groupId>org.acplt</groupId>
                        <artifactId>oncrpc</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>commons-httpclient</groupId>
                <artifactId>commons-httpclient</artifactId>
                <version>3.1</version>
                <exclusions>
                    <!-- exclude commons-logging in favor of slf4j via jcl-over-slf4j -->
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.7</version>
                <exclusions>
                    <!-- bring commons-codec in line with TinkerPop -->
                    <exclusion>
                        <groupId>commons-codec</groupId>
                        <artifactId>commons-codec</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.hamcrest</groupId>
                        <artifactId>hamcrest-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>1.10.19</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.hamcrest</groupId>
                        <artifactId>hamcrest-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-all</artifactId>
                <version>1.3</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.3</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.5</version>
            </dependency>
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>1.12</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <profiles>

        <profile>
            <id>asciidoc</id>
            <activation>
                <activeByDefault>false</activeByDefault>
                <property>
                    <name>asciidoc</name>
                </property>
            </activation>

            <properties>
                <!-- the source asciidocs are copied from /docs to asciidoc.source.dir by bin/process-docs.sh
                     where they can the scripts embedded in the text are then executed and their results shoved
                     back into the doc -->
                <asciidoc.source.dir>${project.basedir}/target/postprocess-asciidoc</asciidoc.source.dir>

                <!-- once code processing is over, the documents are basically ready for the formatter and are
                     copied by way of the maven-resources-plugin to asciidoc.input.dir where they will be processed
                     by the asciidoctor plugin -->
                <asciidoc.input.dir>${project.basedir}/target/doc-source</asciidoc.input.dir>

                <!-- the output directory for the asciidoctor plugin - finalized documents can be found here -->
                <htmlsingle.output.dir>${project.basedir}/target/docs/htmlsingle</htmlsingle.output.dir>
                <asciidoctor.style.dir>${asciidoc.input.dir}/stylesheets</asciidoctor.style.dir>
            </properties>

            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-deploy-plugin</artifactId>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </plugin>
                    <plugin>
                        <artifactId>maven-resources-plugin</artifactId>
                        <inherited>false</inherited>
                        <executions>
                            <!-- copies docs already handled by the preprocessor to their staging area for asciidoc formatting -->
                            <execution>
                                <id>copy-docs-to-work-area</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${asciidoc.input.dir}</outputDirectory>
                                    <resources>
                                        <resource>
                                            <directory>${asciidoc.source.dir}</directory>
                                            <filtering>false</filtering>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                            <!-- copies images/resources to staging area for asciidoc formatting -->
                            <execution>
                                <id>copy-static-assets-to-htmlsingle</id>
                                <phase>process-resources</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${htmlsingle.output.dir}</outputDirectory>
                                    <resources>
                                        <resource>
                                            <directory>${asciidoc.input.dir}/static</directory>
                                            <filtering>false</filtering>
                                        </resource>
                                    </resources>
                                    <nonFilteredFileExtensions>
                                        <nonFilteredFileExtension>png</nonFilteredFileExtension>
                                        <nonFilteredFileExtension>py</nonFilteredFileExtension>
                                    </nonFilteredFileExtensions>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.asciidoctor</groupId>
                        <artifactId>asciidoctor-maven-plugin</artifactId>
                        <inherited>false</inherited>
                        <executions>
                            <execution>
                                <id>home</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>process-asciidoc</goal>
                                </goals>
                                <configuration>
                                    <resources>
                                        <resource>
                                            <directory>${asciidoc.input.dir}</directory>
                                            <targetPath>${htmlsingle.output.dir}</targetPath>
                                            <includes>
                                                <include>index.asciidoc</include>
                                            </includes>
                                            <excludes>
                                                <exclude>${asciidoc.input.dir}/static/*.*</exclude>
                                            </excludes>
                                        </resource>
                                    </resources>
                                    <sourceDirectory>${asciidoc.input.dir}</sourceDirectory>
                                    <outputDirectory>${htmlsingle.output.dir}</outputDirectory>
                                    <sourceDocumentName>index.asciidoc</sourceDocumentName>
                                    <backend>html5</backend>
                                    <doctype>article</doctype>
                                    <attributes>
                                        <imagesdir>images</imagesdir>
                                        <encoding>UTF-8</encoding>
                                        <stylesdir>${asciidoctor.style.dir}</stylesdir>
                                        <stylesheet>tinkerpop.css</stylesheet>
                                        <source-highlighter>coderay</source-highlighter>
                                        <basedir>${project.basedir}</basedir>
                                    </attributes>
                                </configuration>
                            </execution>
                            <execution>
                                <id>reference-book</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>process-asciidoc</goal>
                                </goals>
                                <configuration>
                                    <sourceDirectory>${asciidoc.input.dir}/reference</sourceDirectory>
                                    <sourceDocumentName>index.asciidoc</sourceDocumentName>
                                    <outputDirectory>${htmlsingle.output.dir}/reference</outputDirectory>
                                    <backend>html5</backend>
                                    <doctype>book</doctype>
                                    <attributes>
                                        <imagesdir>../images</imagesdir>
                                        <encoding>UTF-8</encoding>
                                        <toc>true</toc>
                                        <toclevels>3</toclevels>
                                        <toc-position>left</toc-position>
                                        <stylesdir>${asciidoctor.style.dir}</stylesdir>
                                        <stylesheet>tinkerpop.css</stylesheet>
                                        <source-highlighter>coderay</source-highlighter>
                                        <basedir>${project.basedir}</basedir>
                                    </attributes>
                                </configuration>
                            </execution>
                            <execution>
                                <id>upgrade-book</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>process-asciidoc</goal>
                                </goals>
                                <configuration>
                                    <sourceDirectory>${asciidoc.input.dir}/upgrade</sourceDirectory>
                                    <sourceDocumentName>index.asciidoc</sourceDocumentName>
                                    <outputDirectory>${htmlsingle.output.dir}/upgrade</outputDirectory>
                                    <backend>html5</backend>
                                    <doctype>book</doctype>
                                    <attributes>
                                        <imagesdir>../images</imagesdir>
                                        <encoding>UTF-8</encoding>
                                        <toc>true</toc>
                                        <toclevels>3</toclevels>
                                        <toc-position>left</toc-position>
                                        <stylesdir>${asciidoctor.style.dir}</stylesdir>
                                        <stylesheet>tinkerpop.css</stylesheet>
                                        <source-highlighter>coderay</source-highlighter>
                                        <basedir>${project.basedir}</basedir>
                                    </attributes>
                                </configuration>
                            </execution>
                            <execution>
                                <id>developer-book</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>process-asciidoc</goal>
                                </goals>
                                <configuration>
                                    <sourceDirectory>${asciidoc.input.dir}/dev/developer</sourceDirectory>
                                    <sourceDocumentName>index.asciidoc</sourceDocumentName>
                                    <outputDirectory>${htmlsingle.output.dir}/dev/developer</outputDirectory>
                                    <backend>html5</backend>
                                    <doctype>book</doctype>
                                    <attributes>
                                        <imagesdir>../../images</imagesdir>
                                        <encoding>UTF-8</encoding>
                                        <toc>true</toc>
                                        <toclevels>3</toclevels>
                                        <toc-position>left</toc-position>
                                        <stylesdir>${asciidoctor.style.dir}</stylesdir>
                                        <stylesheet>tinkerpop.css</stylesheet>
                                        <source-highlighter>coderay</source-highlighter>
                                        <basedir>${project.basedir}</basedir>
                                    </attributes>
                                </configuration>
                            </execution>
                            <execution>
                                <id>future-book</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>process-asciidoc</goal>
                                </goals>
                                <configuration>
                                    <sourceDirectory>${asciidoc.input.dir}/dev/future</sourceDirectory>
                                    <sourceDocumentName>index.asciidoc</sourceDocumentName>
                                    <outputDirectory>${htmlsingle.output.dir}/dev/future</outputDirectory>
                                    <backend>html5</backend>
                                    <doctype>book</doctype>
                                    <attributes>
                                        <imagesdir>../../images</imagesdir>
                                        <encoding>UTF-8</encoding>
                                        <toc>true</toc>
                                        <toclevels>3</toclevels>
                                        <toc-position>left</toc-position>
                                        <stylesdir>${asciidoctor.style.dir}</stylesdir>
                                        <stylesheet>tinkerpop.css</stylesheet>
                                        <source-highlighter>coderay</source-highlighter>
                                        <basedir>${project.basedir}</basedir>
                                    </attributes>
                                </configuration>
                            </execution>
                            <execution>
                                <id>io-book</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>process-asciidoc</goal>
                                </goals>
                                <configuration>
                                    <sourceDirectory>${asciidoc.input.dir}/dev/io</sourceDirectory>
                                    <sourceDocumentName>index.asciidoc</sourceDocumentName>
                                    <outputDirectory>${htmlsingle.output.dir}/dev/io</outputDirectory>
                                    <backend>html5</backend>
                                    <doctype>book</doctype>
                                    <attributes>
                                        <imagesdir>../../images</imagesdir>
                                        <encoding>UTF-8</encoding>
                                        <toc>true</toc>
                                        <toclevels>3</toclevels>
                                        <toc-position>left</toc-position>
                                        <stylesdir>${asciidoctor.style.dir}</stylesdir>
                                        <stylesheet>tinkerpop.css</stylesheet>
                                        <source-highlighter>coderay</source-highlighter>
                                        <basedir>${project.basedir}</basedir>
                                    </attributes>
                                </configuration>
                            </execution>
                            <execution>
                                <id>provider-book</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>process-asciidoc</goal>
                                </goals>
                                <configuration>
                                    <sourceDirectory>${asciidoc.input.dir}/dev/provider</sourceDirectory>
                                    <sourceDocumentName>index.asciidoc</sourceDocumentName>
                                    <outputDirectory>${htmlsingle.output.dir}/dev/provider</outputDirectory>
                                    <backend>html5</backend>
                                    <doctype>book</doctype>
                                    <attributes>
                                        <imagesdir>../../images</imagesdir>
                                        <encoding>UTF-8</encoding>
                                        <toc>true</toc>
                                        <toclevels>3</toclevels>
                                        <toc-position>left</toc-position>
                                        <stylesdir>${asciidoctor.style.dir}</stylesdir>
                                        <stylesheet>tinkerpop.css</stylesheet>
                                        <source-highlighter>coderay</source-highlighter>
                                        <basedir>${project.basedir}</basedir>
                                    </attributes>
                                </configuration>
                            </execution>
                            <execution>
                                <id>recipe-book</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>process-asciidoc</goal>
                                </goals>
                                <configuration>
                                    <sourceDirectory>${asciidoc.input.dir}/recipes</sourceDirectory>
                                    <sourceDocumentName>index.asciidoc</sourceDocumentName>
                                    <outputDirectory>${htmlsingle.output.dir}/recipes</outputDirectory>
                                    <backend>html5</backend>
                                    <doctype>book</doctype>
                                    <attributes>
                                        <imagesdir>../images</imagesdir>
                                        <encoding>UTF-8</encoding>
                                        <toc>true</toc>
                                        <toclevels>2</toclevels>
                                        <toc-position>left</toc-position>
                                        <stylesdir>${asciidoctor.style.dir}</stylesdir>
                                        <stylesheet>tinkerpop.css</stylesheet>
                                        <source-highlighter>coderay</source-highlighter>
                                        <basedir>${project.basedir}</basedir>
                                    </attributes>
                                </configuration>
                            </execution>
                            <execution>
                                <id>tutorial-getting-started</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>process-asciidoc</goal>
                                </goals>
                                <configuration>
                                    <sourceDirectory>${asciidoc.input.dir}/tutorials/getting-started</sourceDirectory>
                                    <sourceDocumentName>index.asciidoc</sourceDocumentName>
                                    <outputDirectory>${htmlsingle.output.dir}/tutorials/getting-started
                                    </outputDirectory>
                                    <backend>html5</backend>
                                    <doctype>article</doctype>
                                    <attributes>
                                        <imagesdir>../../images</imagesdir>
                                        <encoding>UTF-8</encoding>
                                        <stylesdir>${asciidoctor.style.dir}</stylesdir>
                                        <stylesheet>tinkerpop.css</stylesheet>
                                        <source-highlighter>coderay</source-highlighter>
                                        <basedir>${project.basedir}</basedir>
                                    </attributes>
                                </configuration>
                            </execution>
                            <execution>
                                <id>tutorial-the-gremlin-console</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>process-asciidoc</goal>
                                </goals>
                                <configuration>
                                    <sourceDirectory>${asciidoc.input.dir}/tutorials/the-gremlin-console
                                    </sourceDirectory>
                                    <sourceDocumentName>index.asciidoc</sourceDocumentName>
                                    <outputDirectory>${htmlsingle.output.dir}/tutorials/the-gremlin-console
                                    </outputDirectory>
                                    <backend>html5</backend>
                                    <doctype>article</doctype>
                                    <attributes>
                                        <imagesdir>../../images</imagesdir>
                                        <encoding>UTF-8</encoding>
                                        <stylesdir>${asciidoctor.style.dir}</stylesdir>
                                        <stylesheet>tinkerpop.css</stylesheet>
                                        <source-highlighter>coderay</source-highlighter>
                                        <basedir>${project.basedir}</basedir>
                                    </attributes>
                                </configuration>
                            </execution>
                            <execution>
                                <id>tutorial-gremlin-language-variants</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>process-asciidoc</goal>
                                </goals>
                                <configuration>
                                    <sourceDirectory>${asciidoc.input.dir}/tutorials/gremlin-language-variants
                                    </sourceDirectory>
                                    <sourceDocumentName>index.asciidoc</sourceDocumentName>
                                    <outputDirectory>${htmlsingle.output.dir}/tutorials/gremlin-language-variants
                                    </outputDirectory>
                                    <backend>html5</backend>
                                    <doctype>article</doctype>
                                    <attributes>
                                        <imagesdir>../../images</imagesdir>
                                        <encoding>UTF-8</encoding>
                                        <stylesdir>${asciidoctor.style.dir}</stylesdir>
                                        <stylesheet>tinkerpop.css</stylesheet>
                                        <source-highlighter>coderay</source-highlighter>
                                        <basedir>${project.basedir}</basedir>
                                    </attributes>
                                </configuration>
                            </execution>
                            <execution>
                                <id>tutorial-gremlins-anatomy</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>process-asciidoc</goal>
                                </goals>
                                <configuration>
                                    <sourceDirectory>${asciidoc.input.dir}/tutorials/gremlins-anatomy</sourceDirectory>
                                    <sourceDocumentName>index.asciidoc</sourceDocumentName>
                                    <outputDirectory>${htmlsingle.output.dir}/tutorials/gremlins-anatomy
                                    </outputDirectory>
                                    <backend>html5</backend>
                                    <doctype>article</doctype>
                                    <attributes>
                                        <imagesdir>../../images</imagesdir>
                                        <encoding>UTF-8</encoding>
                                        <stylesdir>${asciidoctor.style.dir}</stylesdir>
                                        <stylesheet>tinkerpop.css</stylesheet>
                                        <source-highlighter>coderay</source-highlighter>
                                        <basedir>${project.basedir}</basedir>
                                    </attributes>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>javadoc</id>
            <activation>
                <activeByDefault>false</activeByDefault>
                <property>
                    <name>javadoc</name>
                </property>
            </activation>

            <properties>
                <javadoc.dir>${project.build.directory}/site/apidocs</javadoc.dir>
            </properties>

            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-deploy-plugin</artifactId>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </plugin>
                    <!-- There's a maven-javadoc-plugin:aggregate execution above,
                         but it's bound to the site lifecycle, so we can't rely on it.
                         This execution binds to the default lifecycle. -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>aggregate-full-in-default-lifecycle</id>
                                <goals>
                                    <goal>javadoc</goal>
                                </goals>
                                <phase>generate-sources</phase>
                                <inherited>false</inherited>
                                <configuration>
                                    <destDir>full</destDir>
                                    <additionalparam>-Xdoclint:none</additionalparam>
                                    <overview>${basedir}/docs/javadoc/overview.html</overview>
                                    <quiet>true</quiet>
                                    <sourcepath>
                                        gremlin-core/src/main/java:gremlin-driver/src/main/java:gremlin-groovy/src/main/java:gremlin-python/src/main/java:gremlin-server/src/main/java:gremlin-test/src/main/java:hadoop-gremlin/src/main/java:neo4j-gremlin/src/main/java:spark-gremlin/src/main/java:tinkergraph-gremlin/src/main/java
                                    </sourcepath>
                                </configuration>
                            </execution>
                            <execution>
                                <id>aggregate-core-in-default-lifecycle</id>
                                <goals>
                                    <goal>javadoc</goal>
                                </goals>
                                <phase>generate-sources</phase>
                                <inherited>false</inherited>
                                <configuration>
                                    <destDir>core</destDir>
                                    <additionalparam>-Xdoclint:none</additionalparam>
                                    <overview>${basedir}/docs/javadoc/overview.html</overview>
                                    <quiet>true</quiet>
                                    <sourcepath>
                                        gremlin-core/src/main/java:gremlin-driver/src/main/java
                                    </sourcepath>
                                    <sourceFileIncludes>
                                        <!-- jsr223 -->
                                        <include>
                                            org/apache/tinkerpop/gremlin/jsr223/*.java
                                        </include>
                                        <include>
                                            org/apache/tinkerpop/gremlin/jsr223/console/*.java
                                        </include>
                                        <!-- structure -->
                                        <include>
                                            org/apache/tinkerpop/gremlin/structure/*.java
                                        </include>
                                        <!-- io -->
                                        <include>
                                            org/apache/tinkerpop/gremlin/structure/io/*.java
                                        </include>
                                        <include>
                                            org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLReader.java
                                        </include>
                                        <include>
                                            org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLWriter.java
                                        </include>
                                        <include>
                                            org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONReader.java
                                        </include>
                                        <include>
                                            org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONWriter.java
                                        </include>
                                        <include>
                                            org/apache/tinkerpop/gremlin/structure/io/gryo/GryoReader.java
                                        </include>
                                        <include>
                                            org/apache/tinkerpop/gremlin/structure/io/gryo/GryoWriter.java
                                        </include>
                                        <!-- process -->
                                        <include>
                                            org/apache/tinkerpop/gremlin/process/*.java
                                        </include>
                                        <!-- computer -->
                                        <include>org/apache/tinkerpop/gremlin/process/computer/*.java
                                        </include>
                                        <include>
                                            org/apache/tinkerpop/gremlin/process/computer/clustering/connected/ConnectedComponentVertexProgram.java
                                        </include>
                                        <include>
                                            org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
                                        </include>
                                        <include>
                                            org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
                                        </include>
                                        <include>
                                            org/apache/tinkerpop/gremlin/process/computer/search/path/ShortestPathVertexProgram.java
                                        </include>
                                        <include>
                                            org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
                                        </include>
                                        <!-- traversal -->
                                        <include>
                                            org/apache/tinkerpop/gremlin/process/traversal/*.java
                                        </include>
                                        <include>
                                            org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
                                        </include>
                                        <include>
                                            org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
                                        </include>
                                        <!-- driver -->
                                        <include>org/apache/tinkerpop/gremlin/driver/*.java
                                        </include>
                                    </sourceFileIncludes>
                                    <!-- add dependencies as necessary here - not sure why this is necessary, but assume
                                         it is related to the <sourceFileIncludes> as ERROR messages do not appear on
                                         build for the "full" javadocs -->
                                    <additionalDependencies>
                                        <additionalDependency>
                                            <groupId>commons-configuration</groupId>
                                            <artifactId>commons-configuration</artifactId>
                                            <version>${commons.configuration.version}</version>
                                        </additionalDependency>
                                        <additionalDependency>
                                            <groupId>org.javatuples</groupId>
                                            <artifactId>javatuples</artifactId>
                                            <version>${java.tuples.version}</version>
                                        </additionalDependency>
                                        <additionalDependency>
                                            <groupId>org.apache.tinkerpop</groupId>
                                            <artifactId>gremlin-shaded</artifactId>
                                            <version>${project.version}</version>
                                        </additionalDependency>
                                        <additionalDependency>
                                            <groupId>org.codehaus.groovy</groupId>
                                            <artifactId>groovy-groovysh</artifactId>
                                            <version>${groovy.version}</version>
                                            <classifier>indy</classifier>
                                        </additionalDependency>
                                        <additionalDependency>
                                            <groupId>org.codehaus.groovy</groupId>
                                            <artifactId>groovy-json</artifactId>
                                            <version>${groovy.version}</version>
                                            <classifier>indy</classifier>
                                        </additionalDependency>
                                        <additionalDependency>
                                            <groupId>org.apache.commons</groupId>
                                            <artifactId>commons-lang3</artifactId>
                                            <version>${commons.lang3.version}</version>
                                        </additionalDependency>
                                        <additionalDependency>
                                            <groupId>commons-lang</groupId>
                                            <artifactId>commons-lang</artifactId>
                                            <version>${commons.lang.version}</version>
                                        </additionalDependency>
                                        <additionalDependency>
                                            <groupId>org.slf4j</groupId>
                                            <artifactId>slf4j-api</artifactId>
                                            <version>${slf4j.version}</version>
                                        </additionalDependency>
                                        <additionalDependency>
                                            <groupId>io.netty</groupId>
                                            <artifactId>netty-all</artifactId>
                                            <version>${netty.version}</version>
                                        </additionalDependency>
                                        <additionalDependency>
                                            <groupId>org.yaml</groupId>
                                            <artifactId>snakeyaml</artifactId>
                                            <version>${snakeyaml.version}</version>
                                        </additionalDependency>
                                        <additionalDependency>
                                            <groupId>com.jcabi</groupId>
                                            <artifactId>jcabi-manifests</artifactId>
                                            <version>${jcabi.version}</version>
                                        </additionalDependency>
                                    </additionalDependencies>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>apply-filters-to-javadoc</id>
                                <phase>process-resources</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${basedir}/target/javadoc-temp</outputDirectory>
                                    <resources>
                                        <resource>
                                            <directory>${basedir}/target/site/apidocs</directory>
                                            <filtering>true</filtering>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                            <execution>
                                <id>copy-java-doc-back</id>
                                <phase>process-resources</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${basedir}/target/site/apidocs</outputDirectory>
                                    <resources>
                                        <resource>
                                            <directory>${basedir}/target/javadoc-temp</directory>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <!-- Continuous Integration - mutes test logs and skip javadoc generation to lighten output -->
            <id>ci</id>
            <activation>
                <activeByDefault>false</activeByDefault>
                <property>
                    <name>ci</name>
                </property>
            </activation>

            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>${javadoc-plugin.version}</version>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <argLine>-Dlog4j.configuration=${log4j-silent.properties}
                                -Dbuild.dir=${project.build.directory} -Dis.testing=true
                            </argLine>
                            <excludes>
                                <exclude>**/*IntegrateTest.java</exclude>
                            </excludes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>grapes</id>
            <activation>
                <activeByDefault>false</activeByDefault>
                <property>
                    <name>cleanGrapes</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>exec-maven-plugin</artifactId>
                        <groupId>org.codehaus.mojo</groupId>
                        <version>1.6.0</version>
                        <inherited>false</inherited>
                        <executions>
                            <execution>
                                <id>clean-grapes</id>
                                <phase>clean</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <executable>${basedir}/bin/clean-grapes.sh</executable>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>coverage</id>
            <activation>
                <activeByDefault>false</activeByDefault>
                <property>
                    <name>coverage</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>prepare-agent</id>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                                <configuration>
                                    <destFile>target/jacoco.exec</destFile>
                                    <append>true</append>
                                    <propertyName>surefireArgLine</propertyName>
                                    <excludes>
                                        <exclude>Lib/*.class</exclude>
                                        <exclude>Lib/aenum/**</exclude>
                                        <exclude>Lib/backports/**</exclude>
                                        <exclude>Lib/certifi/**</exclude>
                                        <exclude>Lib/setuptools/**</exclude>
                                        <exclude>Lib/setuptools.command/**</exclude>
                                        <exclude>Lib/tornado/**</exclude>
                                        <exclude>Lib/tornado.platform/**</exclude>
                                        <exclude>Lib/tornado.test/**</exclude>
                                    </excludes>
                                </configuration>
                            </execution>
                            <execution>
                                <id>prepare-it-agent</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                                <configuration>
                                    <destFile>target/jacoco-it.exec</destFile>
                                    <append>true</append>
                                    <propertyName>failsafeArgLine</propertyName>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <argLine>-Dlog4j.configuration=${log4j-test.properties} -Dbuild.dir=${project.build.directory} -Dis.testing=true ${surefireArgLine}
                            </argLine>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <configuration>
                            <argLine>-Dlog4j.configuration=${log4j-test.properties} -Dhost=localhost -Dport=8182
                                -Dbuild.dir=${project.build.directory} -Dis.testing=true ${failsafeArgLine}
                            </argLine>
                        </configuration>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-report-plugin</artifactId>
                        <version>2.20</version>
                        <executions>
                            <execution>
                                <id>aggregate-surefire-report</id>
                                <goals>
                                    <goal>report</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <aggregate>true</aggregate>
                                    <alwaysGenerateSurefireReport>true</alwaysGenerateSurefireReport>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>

        </profile>

        <!--
        overriding the default apache release a bit from here:
             https://github.com/apache/maven-apache-parent/blob/apache-21/pom.xml
        because it doesn't filter all the files out that we need as it assumes a pure java infrastructure and we
        have all manner of different languages hanging about
        -->
        
        <profile>
            <id>apache-release</id>
            <build>
                <plugins>
                    <!-- Create a source-release artifact that contains the fully buildable
                         project directory source structure. This is the artifact which is
                         the official subject of any release vote. -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <executions>
                            <!-- explicitly ignore the apache parent execution or we generate two zips -->
                            <execution>
                                <id>source-release-assembly</id>
                                <phase>none</phase>
                            </execution>
                            <!-- this is the tinkerpop version that generates the "good" zip -->
                            <execution>
                                <id>tinkerpop-source-release-assembly</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                                    <descriptors>
                                        <descriptor>source-release.xml</descriptor>
                                    </descriptors>
                                    <tarLongFileMode>posix</tarLongFileMode>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

    </profiles>
</project>
