[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Avoid re-generate Parser.jj on each build if the parser was not modified

Great idea. 

Can you nag the Drill folks to contribute their changes back, if their plugin is a fork?


> On Sep 15, 2018, at 11:37, Vladimir Sitnikov <sitnikov.vladimir@xxxxxxxxx> wrote:
> Hi,
> I'm sure lots of us have seen during Maven build even though the sources
> were not changed:
>   Compiling 1155 source files to .../code/calcite/core/target/classes
> The issue there is FMPP generates Parser.jj no matter what, and it causes
> JavaCC to re-generate parser which causes maven-compiler-plugin to compile
> calcite-core again.
> Note: Maven sends all the files to javac and it assumes javac is
> intelligent enough to identify which files were modified and which need to
> be recompiled.
> Unfortunately, regular javac is not incremental, and it basically builds
> the whole source tree (see
> https://issues.apache.org/jira/browse/MCOMPILER-209 )
> I propose to use org.apache.drill.tools:drill-fmpp-maven-plugin instead of
> com.googlecode.fmpp-maven-plugin:fmpp-maven-plugin.
> Drill's fmpp plugin compares outputs, thus it skips overwrite of Parser.jj,
> and it improves Calcite Core build times.
> I'm sure IDEs would be happier since Parser.jj and the generated parser are
> quite big and IDE won't have to re-parse it.
> JIRA: https://issues.apache.org/jira/browse/CALCITE-2558
> PR: https://github.com/apache/calcite/pull/832
> From my point of view this is an improvement with no drawbacks.
> Any thoughts? Objections?
> Vladimir