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

Robert Scholte commented on MCOMPILER-209:
------------------------------------------

>From MCOMPILER-205

{quote}I see there's some confusion, so something needs to be changed, maybe 
improving documentation is good enough.
Looking at the code, you'll see that non-incremental will only look at changed 
sourcefiles. Incremental will also verifies if dependencies have changed and if 
files have been added or removed. If it has changed, it'll remove the complete 
classes-directory. The reason is that the default java compiler is quite fast, 
likely much faster than analyzing per file what to do with it.
IIUC the eclipse compiler is a real incremental compiler, so we could decide 
that based that based on the used compiler not to drop the classes 
directory.{quote}

> Incremental compilation doesn't work unless useIncrementalCompilation is set 
> to 'false'
> ---------------------------------------------------------------------------------------
>
>                 Key: MCOMPILER-209
>                 URL: https://issues.apache.org/jira/browse/MCOMPILER-209
>             Project: Maven Compiler Plugin
>          Issue Type: Bug
>    Affects Versions: 3.1
>            Reporter: Michael Ekstrand
>            Priority: Major
>         Attachments: 
> MCOMPILER_209_reversed_if_else_branches_for_useIncrementalCompilation_flag.patch,
>  SO_AJ_MavenSoftExceptions.zip
>
>
> The compiler plugin has the 
> [useIncrementalCompilation|https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#useIncrementalCompilation]
>  flag.  However, when this flag is set to {{true}} and using the {{javac}} 
> compiler, the compilation is not very incremental; the compiler always at 
> least claims it is rebuilding all source files (and compile times are 
> consistent with this being what it is actually doing, though it is hard to 
> tell).  If I set {{useIncrementalCompilation}} to {{false}}, then it actually 
> does report that some modules are up-to-date, and some only need a subset of 
> their files compiled.
> It seems that one  or more of the following is happening:
> * {{useIncrementalCompilation}} has some meaning that is very different from 
> what a user would expect, actually controlling whether the compiler plugin 
> uses some internal incremental compilation mechanism vs. incremental 
> compilation support built-in to the particular compiler backend.  One would 
> expect this flag to turn on incremental compilation vs. build-everything.
> * The log messages do not reflect what it is actually doing; that is, it 
> seems possible that it's saying "Compiling 164 source files" when it's really 
> handing 164 source files off to the compiler for potential compilation.  If 
> this is the case, it is very confusing and misleading.
> * The logic of {{useIncrementalCompilation}} is just inverted.  Looking at 
> the source code for the abstract compiler MOJO, it doesn't look like it's 
> quite this simple, but I also don't know what all the various components at 
> work are doing.
> * There is a bug in the implementation of {{useIncrementalCompilation}}.
> The result of all this is incremental compilation with Maven is very 
> confusing and difficult to understand.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to