[ 
https://issues.apache.org/jira/browse/MCOMPILER-538?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17799180#comment-17799180
 ] 

Slawomir Jaranowski commented on MCOMPILER-538:
-----------------------------------------------

[~mensinda] I have tested your patch with provided project .... and I have:

{noformat}
generatedSourcesInJavacArgs.sh

...

[INFO] --- compiler:3.12.1-SNAPSHOT:compile (default-compile) @ code ---
[INFO] Compiling 2 source files with javac [forked debug deprecation target 17] 
to target/classes
[INFO] -------------------------------------------------------------
[WARNING] COMPILATION WARNING : 
[INFO] -------------------------------------------------------------
[WARNING] [options] system modules path not set in conjunction with -source 17
[INFO] 1 warning
[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] java.lang.RuntimeException: javax.annotation.processing.FilerException: 
Attempt to recreate a file for type bar.MyGeneratedClass
        at foo.MyProcessor.process(MyProcessor.java:24)
        at 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:1021)
        at 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:937)
        at 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1265)
        at 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1380)
        at 
jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1272)
        at 
jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:946)
        at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:319)
        at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:178)
        at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:64)
        at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:50)
Caused by: javax.annotation.processing.FilerException: Attempt to recreate a 
file for type bar.MyGeneratedClass
        at 
jdk.compiler/com.sun.tools.javac.processing.JavacFiler.checkNameAndExistence(JavacFiler.java:741)
        at 
jdk.compiler/com.sun.tools.javac.processing.JavacFiler.createSourceOrClassFile(JavacFiler.java:498)
        at 
jdk.compiler/com.sun.tools.javac.processing.JavacFiler.createSourceFile(JavacFiler.java:435)
        at foo.MyProcessor.generate(MyProcessor.java:40)
        at foo.MyProcessor.process(MyProcessor.java:22)
        ... 10 more
{noformat}

So looks like not resolve a problem

We should have an IT - which can reproduce a problem

> Do not add target/generated-sources/annotations to the source roots
> -------------------------------------------------------------------
>
>                 Key: MCOMPILER-538
>                 URL: https://issues.apache.org/jira/browse/MCOMPILER-538
>             Project: Maven Compiler Plugin
>          Issue Type: Bug
>    Affects Versions: 3.11.0
>            Reporter: Daniel Mensinger
>            Assignee: Slawomir Jaranowski
>            Priority: Major
>             Fix For: 3.12.1
>
>
> 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:
> {code:java}
> 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
> {code}
>  
> 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



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to