Are Java 9+ annotation processors using module path supposed to generate
source code that has a javax.annotation.processing.Generated annotation?
(which is part of java.compile)

I have an annotation processor that supports modules and is fine except
that when module applications use it the @Generated will not be included in
the generated source unless the application module-info adds a *requires
java.compiler;*  (which seems wrong).

So this is a minor niggle that the @Generated no longer is included in the
generated source when apps go from class path to module path.

Apologies is this has been asked before.  I was unable to find anything on
this issue.

Any pointers or thoughts?


*Background*

I have an annotation processor that generates source code (that now
supports java modules with a module-info via a Multi-Release jar).  The
module-info for the annotation processor is:

module io.avaje.inject.generator {

  requires java.compiler;
  requires io.avaje.inject;
  requires java.annotation;

  provides javax.annotation.processing.Processor with
io.avaje.inject.generator.Processor;
}


The annotation processor adds a @Generated to the generated source to
document that the source code is generated. The annotation processor only
adds the @Generated if javax.annotation.processing.Generated is deemed
available by using:

 *elements.getTypeElement("javax.annotation.processing.Generated") != null*



The annotation processor generates source that includes the @Generated in
the cases of:

- There is no module-info.java  (app is using class path and not module
path)
- The app module-info.java includes:   *requires java.compiler;*

I'm not expecting users of this annotation processor to put a *requires
java.compiler;* into their module-info.

I think I must be doing something wrong or should not try to
use javax.annotation.processing.Generated which is part of java.compile.


Cheers, Rob.

Reply via email to