[ 
https://issues.apache.org/jira/browse/MCOMPILER-240?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tibor Adam Varga closed MCOMPILER-240.
--------------------------------------

The fix has been delivered and the issue appears abandoned, so I closing it 
seems like the right move at this point.

> Generated sources directory should not be added to compiler's source roots
> --------------------------------------------------------------------------
>
>                 Key: MCOMPILER-240
>                 URL: https://issues.apache.org/jira/browse/MCOMPILER-240
>             Project: Maven Compiler Plugin
>          Issue Type: Bug
>    Affects Versions: 3.2, 3.3, 3.5
>         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 Adam Varga
>            Assignee: Andreas Gudian
>             Fix For: 3.5.1
>
>         Attachments: 
> Generated_sources_directory_added_to_source_roots_after_compilation.patch, 
> code-generation-test-case.tar.bz2
>
>
> 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.3.4#6332)

Reply via email to