Details
-
Bug
-
Status: In Progress
-
Major
-
Resolution: Unresolved
-
3.11.0
-
None
Description
Adding the generated source root (target/generated-sources/annotations) is not required for javac. Additionally adding the generated source root results in compilation errors with annotation processors generating code unless the generated-sources dir is cleaned.
Specifically, the following steps result in compilation errors:
- run mvn clean
- Modify a source file that is consumed by the annotation processor so that there is a compilation error, but the annotation processor still runs (add or remove a parameter in a method call).
- run mvn compile --> the generated file exists but there is no class file for the source file.
- Fix the "bug" from step 2
- run mvn compile again --> compilation should succeed, but it fails.
Example code: https://github.com/mensinda/quarkus-stuff/tree/annotationProcessingTest
Use the annotationProcessingTest branch!
For step 2 this change can be used:
diff --git a/code/src/main/java/bar/MyAnnotatedClass.java b/code/src/main/java/bar/MyAnnotatedClass.java index bbfef7a..a303924 100644 --- a/code/src/main/java/bar/MyAnnotatedClass.java +++ b/code/src/main/java/bar/MyAnnotatedClass.java @@ -4,7 +4,7 @@ import foo.MyAnnotation; @MyAnnotation public class MyAnnotatedClass { - MyGeneratedClass generatedClass = new MyGeneratedClass(); + MyGeneratedClass generatedClass = new MyGeneratedClass(false); // foo
To see that not adding target/generated-sources/annotations helps run mvn -X compile and copy the Command line options:. Then run javac manually, but remove the target/generated-sources/annotations from the -sourcepath list, but not the -s parameter.
PR with a fix: https://github.com/apache/maven-compiler-plugin/pull/191
Attachments
Issue Links
- is related to
-
MCOMPILER-333 Incremental compilation causes "mvn clean compile compile" to fail
- Closed
- relates to
-
MCOMPILER-540 useIncrementalCompilation=false may add generated sources to the sources list
- Open
- links to