[ 
https://jira.codehaus.org/browse/MCOMPILER-240?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=362373#comment-362373
 ] 

Dave Roberge commented on MCOMPILER-240:
----------------------------------------

+1 - we are using dagger on one of our projects (which uses annotation 
processors) and using version 3.2 causes this issue

> Generated sources directory should not be added to compiler's source roots
> --------------------------------------------------------------------------
>
>                 Key: MCOMPILER-240
>                 URL: https://jira.codehaus.org/browse/MCOMPILER-240
>             Project: Maven Compiler Plugin
>          Issue Type: Bug
>    Affects Versions: 3.2
>         Environment: Apache Maven 3.2.5 
> (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T18:29:23+01:00)
> Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
> Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
> Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
> Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
> Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
> Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
>            Reporter: Tibor Varga
>         Attachments: code-generation-test-case.tar.bz2, 
> Generated_sources_directory_added_to_source_roots_after_compilation.patch
>
>
> I am using annotation processors with Maven and I keep getting errors when 
> compiling with generated sources already present from a previous run.
> I have modified one of the test cases submitted for 
> [MCOMPILER-157|http://jira.codehaus.org/browse/MCOMPILER-157] to induce the 
> error by generating a source file _as source file_ rather than as a resource. 
> Untar the test case and run {{mvn clean test -q && mvn test -q}} to verify.
> What I found is that {{AbstractCompilerMojo}} in version 3.2 of the compiler 
> plugin adds the generated sources directory to the compiler's source root 
> list, and that has two undesirable effects:
> # Sources generated in the previous run will be stale the next time around 
> and cause recompilation.
> # The compiler will consider the previously generated source files to be 
> initial inputs.
> The first one is mostly harmless but the second one is deadly, as it breaks 
> the processing environment of the annotation processors.
> From the {{javax.annotation.Filer}} documentation in JDK 8:
> bq. "During each run of an annotation processing tool, a file with a given 
> pathname may be created only once. Any subsequent attempt to create the same 
> file during a run will throw a FilerException [...] The initial inputs to the 
> tool are considered to be created by the zeroth round; therefore, attempting 
> to create a source or class file corresponding to one of those inputs will 
> result in a FilerException."
> Thus by adding the generated sources directory to the compiler's source 
> roots, the compiler plugin causes annotation processors to inadvertently 
> break their contract with the compiler.
> I get the expected behavior when lines 511-540 in {{AbstractCompilerMojo}} 
> are moved after the compiler invocation, say to line 806. See the attached 
> patch.



--
This message was sent by Atlassian JIRA
(v6.1.6#6162)

Reply via email to