You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2021/07/29 17:06:58 UTC

[tinkerpop] branch TINKERPOP-2411 created (now 45a0b50)

This is an automated email from the ASF dual-hosted git repository.

spmallette pushed a change to branch TINKERPOP-2411
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git.


      at 45a0b50  TINKERPOP-2411 Created gremlin-annotations module

This branch includes the following new commits:

     new 45a0b50  TINKERPOP-2411 Created gremlin-annotations module

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[tinkerpop] 01/01: TINKERPOP-2411 Created gremlin-annotations module

Posted by sp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

spmallette pushed a commit to branch TINKERPOP-2411
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 45a0b500b6f02e0d25a8e93d963921a7cd63d346
Author: Stephen Mallette <st...@amazon.com>
AuthorDate: Thu Jul 29 13:05:58 2021 -0400

    TINKERPOP-2411 Created gremlin-annotations module
    
    Moved GremlinDsl annotation and related structure from gremlin-core to gremlin-annotations.
---
 CHANGELOG.asciidoc                                 |   1 +
 docs/src/reference/gremlin-variants.asciidoc       |  14 +-
 docs/src/upgrade/release-3.6.x.asciidoc            |  22 +++
 gremlin-annotations/pom.xml                        | 150 +++++++++++++++++++++
 .../gremlin/process/traversal/dsl/GremlinDsl.java  |   0
 .../process/traversal/dsl/GremlinDslProcessor.java |   0
 .../process/traversal/dsl/ProcessorException.java  |   0
 .../services/javax.annotation.processing.Processor |   0
 .../traversal/dsl/GremlinDslProcessorTest.java     |   0
 .../dsl/SocialPackageTraversalSourceDsl.java       |   0
 .../process/traversal/dsl/RemoteDslTraversal.java  |   0
 .../traversal/dsl/SocialMoveTraversalDsl.java      |   0
 .../dsl/SocialNoDefaultMethodsTraversalDsl.java    |   0
 .../traversal/dsl/SocialPackageTraversalDsl.java   |   0
 .../process/traversal/dsl/SocialTraversalDsl.java  |   0
 .../src/main/resources/archetype-resources/pom.xml |   6 +
 gremlin-core/pom.xml                               |  86 ------------
 .../gremlin/jsr223/ImportGremlinPluginTest.java    |  10 +-
 gremlin-groovy/pom.xml                             |  28 ++++
 pom.xml                                            |   3 +-
 20 files changed, 225 insertions(+), 95 deletions(-)

diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index bdaa1b6..bed0a7f 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ limitations under the License.
 * Changed TinkerGraph to allow identifiers to be heterogeneous when filtering.
 * `TraversalOpProcessor` no longer accepts a `String` representation of `Bytecode` for the "gremlin" argument which was left to support older versions of the drivers.
 * Removed requirement that "ids" used to filter vertices and edges need to be all of a single type.
+* Created `gremlin-annotations` module where the `@GremlinDsl` annotation and related code has been moved.
 * Replaced log4j usage with logback where builds rely on and packaged distributions now contain the latter.
 * Prevented metrics computation unless the traversal is in a locked state.
 
diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc
index 23fc0c1..0ad664a 100644
--- a/docs/src/reference/gremlin-variants.asciidoc
+++ b/docs/src/reference/gremlin-variants.asciidoc
@@ -497,8 +497,18 @@ to "g" and "g1" and "g2" are automatically rebound into "g" on the server-side.
 [[gremlin-java-dsl]]
 === Domain Specific Languages
 
-Creating a <<dsl,Domain Specific Language>> (DSL) in Java requires the `@GremlinDsl` Java annotation in `gremlin-core`.
-This annotation should be applied to a "DSL interface" that extends `GraphTraversal.Admin`:
+Creating a <<dsl,Domain Specific Language>> (DSL) in Java requires the `@GremlinDsl` Java annotation in the
+`gremlin-annotations` module. This annotation should be applied to a "DSL interface" that extends
+`GraphTraversal.Admin`:
+
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.tinkerpop</groupId>
+    <artifactId>gremlin-annotations</artifactId>
+    <version>x.y.z</version>
+</dependency>
+----
 
 [source,java]
 ----
diff --git a/docs/src/upgrade/release-3.6.x.asciidoc b/docs/src/upgrade/release-3.6.x.asciidoc
index 6a3e520..4549612 100644
--- a/docs/src/upgrade/release-3.6.x.asciidoc
+++ b/docs/src/upgrade/release-3.6.x.asciidoc
@@ -27,6 +27,28 @@ Please see the link:https://github.com/apache/tinkerpop/blob/3.6.0/CHANGELOG.asc
 
 === Upgrading for Users
 
+==== gremlin-annotations
+
+There is a new module called `gremlin-annotations` and it holds the annotations used to construct
+link:https://tinkerpop.apache.org/docs/current/reference/#gremlin-java-dsl[Java-based Gremlin DSLs]. These annotations
+were formerly in `gremlin-core` and therefore it will be necessary to modify dependencies accordingly when upgrading
+to 3.6.0. Package and class names have remained the same and general usage is unchanged.
+
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.tinkerpop</groupId>
+    <artifactId>gremlin-annotations</artifactId>
+    <version>3.6.0</version>
+</dependency>
+----
+
+It is worth noting that `gremlin-groovy` utilized the DSL annotations to construct the
+link:https://tinkerpop.apache.org/docs/3.6.0/reference/#credentials-dsl[Credentials DSL] so the `gremlin-annotations`
+package is now explicitly associated to `gremlin-groovy` but as an `<optional>` dependency.
+
+See:link:https://issues.apache.org/jira/browse/TINKERPOP-2411[TINKERPOP-2411]
+
 ==== Logging Changes
 
 In Gremlin Server and Gremlin Console distributions, the default logging implementation of log4j 1.2.x has been
diff --git a/gremlin-annotations/pom.xml b/gremlin-annotations/pom.xml
new file mode 100644
index 0000000..74d0293
--- /dev/null
+++ b/gremlin-annotations/pom.xml
@@ -0,0 +1,150 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>tinkerpop</artifactId>
+        <groupId>org.apache.tinkerpop</groupId>
+        <version>3.6.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>gremlin-annotations</artifactId>
+    <name>Apache TinkerPop :: Gremlin Annotations</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.tinkerpop</groupId>
+            <artifactId>gremlin-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.squareup</groupId>
+            <artifactId>javapoet</artifactId>
+            <version>1.13.0</version>
+        </dependency>
+        <!-- TESTING -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.google.testing.compile</groupId>
+            <artifactId>compile-testing</artifactId>
+            <version>0.19</version>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.google.guava</groupId>
+                    <artifactId>guava</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <!-- self-conflict resolutions over compile-testing -->
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>30.0-jre</version>
+            <exclusions>
+                <!-- prefer the versions from compile-testing -->
+                <exclusion>
+                    <groupId>org.checkerframework</groupId>
+                    <artifactId>checker-qual</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.google.errorprone</groupId>
+                    <artifactId>error_prone_annotations</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.checkerframework</groupId>
+            <artifactId>checker-qual</artifactId>
+            <version>3.7.0</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <directory>${basedir}/target</directory>
+        <finalName>${project.artifactId}-${project.version}</finalName>
+        <testResources>
+            <testResource>
+                <directory>${basedir}/src/test/resources
+                </directory>
+            </testResource>
+        </testResources>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+            </plugin>
+            <!-- -proc:none = disable annotation processing - testing of the GremlinDslProcessor is handled separately -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                    <compilerArgs>
+                        <arg>-parameters</arg>
+                        <arg>-proc:none</arg>
+                    </compilerArgs>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>jdk11</id>
+            <activation>
+                <jdk>11</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-compiler-plugin</artifactId>
+                        <version>3.8.1</version>
+                        <configuration>
+                            <release>8</release>
+                            <compilerArgs>
+                                <arg>-parameters</arg>
+                                <arg>-proc:none</arg>
+                            </compilerArgs>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDsl.java b/gremlin-annotations/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDsl.java
similarity index 100%
rename from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDsl.java
rename to gremlin-annotations/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDsl.java
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessor.java b/gremlin-annotations/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessor.java
similarity index 100%
rename from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessor.java
rename to gremlin-annotations/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessor.java
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/ProcessorException.java b/gremlin-annotations/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/ProcessorException.java
similarity index 100%
rename from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/ProcessorException.java
rename to gremlin-annotations/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/ProcessorException.java
diff --git a/gremlin-core/src/main/resources/META-INF/services/javax.annotation.processing.Processor b/gremlin-annotations/src/main/resources/META-INF/services/javax.annotation.processing.Processor
similarity index 100%
rename from gremlin-core/src/main/resources/META-INF/services/javax.annotation.processing.Processor
rename to gremlin-annotations/src/main/resources/META-INF/services/javax.annotation.processing.Processor
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessorTest.java b/gremlin-annotations/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessorTest.java
similarity index 100%
rename from gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessorTest.java
rename to gremlin-annotations/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessorTest.java
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialPackageTraversalSourceDsl.java b/gremlin-annotations/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialPackageTraversalSourceDsl.java
similarity index 100%
rename from gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialPackageTraversalSourceDsl.java
rename to gremlin-annotations/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialPackageTraversalSourceDsl.java
diff --git a/gremlin-core/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/RemoteDslTraversal.java b/gremlin-annotations/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/RemoteDslTraversal.java
similarity index 100%
rename from gremlin-core/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/RemoteDslTraversal.java
rename to gremlin-annotations/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/RemoteDslTraversal.java
diff --git a/gremlin-core/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialMoveTraversalDsl.java b/gremlin-annotations/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialMoveTraversalDsl.java
similarity index 100%
rename from gremlin-core/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialMoveTraversalDsl.java
rename to gremlin-annotations/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialMoveTraversalDsl.java
diff --git a/gremlin-core/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialNoDefaultMethodsTraversalDsl.java b/gremlin-annotations/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialNoDefaultMethodsTraversalDsl.java
similarity index 100%
rename from gremlin-core/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialNoDefaultMethodsTraversalDsl.java
rename to gremlin-annotations/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialNoDefaultMethodsTraversalDsl.java
diff --git a/gremlin-core/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialPackageTraversalDsl.java b/gremlin-annotations/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialPackageTraversalDsl.java
similarity index 100%
rename from gremlin-core/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialPackageTraversalDsl.java
rename to gremlin-annotations/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialPackageTraversalDsl.java
diff --git a/gremlin-core/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialTraversalDsl.java b/gremlin-annotations/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialTraversalDsl.java
similarity index 100%
rename from gremlin-core/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialTraversalDsl.java
rename to gremlin-annotations/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialTraversalDsl.java
diff --git a/gremlin-archetype/gremlin-archetype-dsl/src/main/resources/archetype-resources/pom.xml b/gremlin-archetype/gremlin-archetype-dsl/src/main/resources/archetype-resources/pom.xml
index 99a449c..96677ea 100644
--- a/gremlin-archetype/gremlin-archetype-dsl/src/main/resources/archetype-resources/pom.xml
+++ b/gremlin-archetype/gremlin-archetype-dsl/src/main/resources/archetype-resources/pom.xml
@@ -35,6 +35,12 @@ limitations under the License.
             <version>${project.version}</version>
         </dependency>
         <dependency>
+            <groupId>org.apache.tinkerpop</groupId>
+            <artifactId>gremlin-annotations</artifactId>
+            <version>${project.version}</version>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-classic</artifactId>
             <version>${logback.version}</version>
diff --git a/gremlin-core/pom.xml b/gremlin-core/pom.xml
index 861ef74..e48c357 100644
--- a/gremlin-core/pom.xml
+++ b/gremlin-core/pom.xml
@@ -77,11 +77,6 @@ limitations under the License.
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>com.squareup</groupId>
-            <artifactId>javapoet</artifactId>
-            <version>1.8.0</version>
-        </dependency>
-        <dependency>
             <groupId>net.objecthunter</groupId>
             <artifactId>exp4j</artifactId>
             <version>0.4.8</version>
@@ -116,47 +111,6 @@ limitations under the License.
             <artifactId>hamcrest</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>com.google.testing.compile</groupId>
-            <artifactId>compile-testing</artifactId>
-            <version>0.15</version>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.google.guava</groupId>
-                    <artifactId>guava</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.google.errorprone</groupId>
-                    <artifactId>error_prone_annotations</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <!-- resolve self-conflict within compile-testing -->
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <version>23.4-android</version>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.google.errorprone</groupId>
-                    <artifactId>error_prone_annotations</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>com.google.errorprone</groupId>
-            <artifactId>error_prone_annotations</artifactId>
-            <version>2.0.19</version>
-            <scope>test</scope>
-            <exclusions>
-              <exclusion>
-                <artifactId>tools</artifactId>
-                <groupId>com.sun</groupId>
-              </exclusion>
-            </exclusions>
-        </dependency>
     </dependencies>
     <build>
         <directory>${basedir}/target</directory>
@@ -176,46 +130,6 @@ limitations under the License.
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
             </plugin>
-            <!-- disable annotation processing - testing of the GremlinDslProcessor is handled separately -->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
-                    <compilerArgs>
-                        <arg>-parameters</arg>
-                        <arg>-proc:none</arg>
-                    </compilerArgs>
-                </configuration>
-            </plugin>
         </plugins>
     </build>
-
-    <profiles>
-        <profile>
-            <id>jdk11</id>
-            <activation>
-                <jdk>11</jdk>
-            </activation>
-            <build>
-                <pluginManagement>
-                    <plugins>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-compiler-plugin</artifactId>
-                            <version>3.8.1</version>
-                            <configuration>
-                                <release>8</release>
-                                <compilerArgs>
-                                    <arg>-parameters</arg>
-                                    <arg>-proc:none</arg>
-                                </compilerArgs>
-                            </configuration>
-                        </plugin>
-                    </plugins>
-                </pluginManagement>
-            </build>
-        </profile>
-    </profiles>
 </project>
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPluginTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPluginTest.java
index 3bf9757..b2a1a3c 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPluginTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPluginTest.java
@@ -26,7 +26,9 @@ import static org.junit.Assert.fail;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
+import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -36,8 +38,6 @@ import org.apache.tinkerpop.gremlin.structure.io.IoCore;
 import org.apache.tinkerpop.gremlin.util.Gremlin;
 import org.junit.Test;
 
-import com.google.common.collect.ImmutableSet;
-
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
@@ -147,12 +147,10 @@ public class ImportGremlinPluginTest {
                 .fieldsImports(Collections.singletonList(Math.class.getCanonicalName() + "#*")).create();
 
         final DefaultImportCustomizer customizer = (DefaultImportCustomizer) module.getCustomizers().get()[0];
-        assertThat(customizer.getFieldImports(), is(ImmutableSet.of(Math.class.getField("PI"), Math.class.getField("E"))));
+        assertThat(customizer.getFieldImports(), is(new HashSet<>(
+                Arrays.asList(Math.class.getField("PI"), Math.class.getField("E")))));
     }
 
-
-    
-    
     @Test
     public void shouldThrowExceptionIfInvalidEnumDescriptor() throws Exception {
         final String badDescriptor = "T*id";
diff --git a/gremlin-groovy/pom.xml b/gremlin-groovy/pom.xml
index ded8358..b24969f 100644
--- a/gremlin-groovy/pom.xml
+++ b/gremlin-groovy/pom.xml
@@ -32,6 +32,12 @@ limitations under the License.
             <version>${project.version}</version>
         </dependency>
         <dependency>
+            <groupId>org.apache.tinkerpop</groupId>
+            <artifactId>gremlin-annotations</artifactId>
+            <version>${project.version}</version>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
             <groupId>org.apache.ivy</groupId>
             <artifactId>ivy</artifactId>
             <version>2.4.0</version>
@@ -157,6 +163,17 @@ limitations under the License.
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                    <compilerArgs>
+                        <arg>-parameters</arg>
+                    </compilerArgs>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 
@@ -180,6 +197,17 @@ limitations under the License.
                             <sourcepath>${pom.basedir}/src/main/java:${project.build.directory}/generated-sources/annotations:${project.build.directory}/generated-sources/groovy-stubs/main</sourcepath>
                         </configuration>
                     </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-compiler-plugin</artifactId>
+                        <version>3.8.1</version>
+                        <configuration>
+                            <release>8</release>
+                            <compilerArgs>
+                                <arg>-parameters</arg>
+                            </compilerArgs>
+                        </configuration>
+                    </plugin>
                 </plugins>
             </build>
         </profile>
diff --git a/pom.xml b/pom.xml
index a3e5b8b..c06aae5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -125,6 +125,7 @@ limitations under the License.
         <module>gremlin-language</module>
         <module>gremlin-shaded</module>
         <module>gremlin-core</module>
+        <module>gremlin-annotations</module>
         <module>gremlin-test</module>
         <module>gremlin-groovy</module>
         <module>tinkergraph-gremlin</module>
@@ -461,7 +462,7 @@ limitations under the License.
         </plugins>
         <pluginManagement>
             <plugins>
-                <!-- there is a jdk11 profile that will be enabled if built with that version - these settings will be overriden -->
+                <!-- there is a jdk11 profile that will be enabled if built with that version - these settings will be overridden -->
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-compiler-plugin</artifactId>