eclipse-vertx / vertx-codegen

Vert.x code generator for asynchronous polyglot APIs
Apache License 2.0
105 stars 92 forks source link

After modifying the source file, the corresponding automatically generated class is not updated #309

Open changchengqin opened 4 years ago

changchengqin commented 4 years ago

Questions

After modifying the source file, the corresponding automatically generated class is not updated.

Version

4.0.0-milestone4

Context

while I used vertx to automatically generate classes such as VertxProxyHandler and VertxEBProxy, I encountered a problem, that is: when I modify a certain service source code file, the IDE will automatically recompile it, but the corresponding VertxProxyHandler and VertxEBProxy classes have not been recompile.

After debugging, I found that it was caused by this line of code in the process method of the CodeGenProcessor class in the vertx-codgen class library.

image

As long as classes such as VertxProxyHandler are automatically generated once, unless the entire project is recompiled as a whole or the generated class is deleted, it will not be automatically generated in the future.

Do you have a reproducer?

https://github.com/changchengqin/codegen

Steps to reproduce

  1. clone above repo.
  2. build
  3. modify source file src/main/java/com/example/codegen/service/UserService.java
  4. recompile source file src/main/java/com/example/codegen/service/UserService.java

The normal expected result is that UserServiceVertxProxyHandler and UserServiceEBProxy should be updated accordingly, but the fact is not.

Extra

vietj commented 3 years ago

have you tried modifying this project to make it work ?

changchengqin commented 3 years ago

Yes, I tried many times, including using the latest Vertx 4.0.0.beta3 version, the phenomenon still exists.

vietj commented 3 years ago

no I mean, have you tried patching vertx-codegen to make it work

changchengqin commented 3 years ago

Hmm, yes, when I commented these three lines of code in the process method of the CodeGenProcessor class, everything returned to normal. image