maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tibor Adam Varga (JIRA)" <>
Subject [jira] [Commented] (MCOMPILER-240) Generated sources directory should not be added to compiler's source roots
Date Fri, 05 Feb 2016 14:11:39 GMT


Tibor Adam Varga commented on MCOMPILER-240:

I took a look and indeed, this group of issues (235, 236, and this 240) seem to have the same
root cause and simple fix, as the changes you made two weeks ago in the abstract mojo class
*indeed fixed* this here issue as well.

The symptoms of the other issues seem more involved than those of this one so I wouldn't call
this a duplicate, but I leave that to your judgement.

What's important is that version 3.6 of the compiler plugin will have this issue fixed and
I'm glad that is the case.

A small suggestion though: since this issue delineates the actual root cause not as a guess
or suggestion but as an assertion with reference to documentation etc, it may be worthwhile
to peruse this issue description even if only to confirm and validate your understanding that
the fix you applied was indeed the right one.

Thanks for your good work and I'm looking forward to using version 3.6 of the plugin!

> Generated sources directory should not be added to compiler's source roots
> --------------------------------------------------------------------------
>                 Key: MCOMPILER-240
>                 URL:
>             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
>         Attachments: 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|]
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
> # Sources generated in the previous run will be stale the next time around and cause
> # 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

View raw message