Currently GremlinDslProcessor is located directly in the gremlin-core artifact. This has a few downsides:
- it pulls a runtime dependency to JavaPoet
- annotation processing is always on. The compiler will have to scan the classpath to check if GremlinDsl is used anywhere. I believe this is an additional step that would not happen if no processor was present.
It's a good practice to place annotation processors in their own artifact. Then users can opt in, in one of two ways:
- place the JAR in their compile classpath, but not the runtime one (e.g. "provided" scope in Maven)
- or use the special -processorpath of javac (<annotationProcessorPaths> in the Maven compiler plugin config).
Either way this provides a cleaner separation, the dependencies that are specific to the processing / code generation part are not retained at runtime.
- links to