ClosureJavascriptFramework icon indicating copy to clipboard operation
ClosureJavascriptFramework copied to clipboard

Closure Compiler upgrade

Open lukas-vlcek opened this issue 10 years ago • 3 comments

In v1.18.1 we use closure compiler version v20131014 by default. There has been several releases since then (see https://github.com/google/closure-compiler/wiki/Releases). We should consider upgrading the closure compiler and start plan for a new release (v1.18.2?) that will be using it by default.

lukas-vlcek avatar Jun 11 '14 11:06 lukas-vlcek

I tried to switch to compiler v20140508

<plugin>
    <groupId>com.github.jlgrock.javascript-framework</groupId>
    <artifactId>closure-compiler-maven-plugin</artifactId>
    <version>1.18.1</version>
    <dependencies>
        <dependency>
            <groupId>com.google.javascript</groupId>
            <artifactId>closure-compiler</artifactId>
            <version>v20140508</version>
        </dependency>
    </dependencies>
</plugin>

and I got the following error during compilation

[ERROR] Failed to execute goal com.github.jlgrock.javascript-framework:closure-compiler-maven-plugin:1.18.1:js-closure-compile (default-js-closure-compile) on project core: Execution default-js-closure-compile of goal com.github.jlgrock.javascript-framework:closure-compiler-maven-plugin:1.18.1:js-closure-compile failed: An API incompatibility was encountered while executing com.github.jlgrock.javascript-framework:closure-compiler-maven-plugin:1.18.1:js-closure-compile: java.lang.NoSuchFieldError: checkUnreachableCode
[ERROR] -----------------------------------------------------
[ERROR] realm =    plugin>com.github.jlgrock.javascript-framework:closure-compiler-maven-plugin:1.18.1
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/Users/lukas/.m2/repository/com/github/jlgrock/javascript-framework/closure-compiler-maven-plugin/1.18.1/closure-compiler-maven-plugin-1.18.1.jar
[ERROR] urls[1] = file:/Users/lukas/.m2/repository/com/google/javascript/closure-compiler/v20140508/closure-compiler-v20140508.jar
[ERROR] urls[2] = file:/Users/lukas/.m2/repository/com/google/javascript/closure-compiler-rhino/v20140508/closure-compiler-rhino-v20140508-shaded.jar
[ERROR] urls[3] = file:/Users/lukas/.m2/repository/com/google/javascript/closure-compiler-externs/v20140508/closure-compiler-externs-v20140508.jar
[ERROR] urls[4] = file:/Users/lukas/.m2/repository/args4j/args4j/2.0.26/args4j-2.0.26.jar
[ERROR] urls[5] = file:/Users/lukas/.m2/repository/com/google/guava/guava/17.0/guava-17.0.jar
[ERROR] urls[6] = file:/Users/lukas/.m2/repository/com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.jar
[ERROR] urls[7] = file:/Users/lukas/.m2/repository/org/json/json/20090211/json-20090211.jar
[ERROR] urls[8] = file:/Users/lukas/.m2/repository/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar
[ERROR] urls[9] = file:/Users/lukas/.m2/repository/org/codehaus/plexus/plexus-utils/2.0.4/plexus-utils-2.0.4.jar
[ERROR] urls[10] = file:/Users/lukas/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
[ERROR] urls[11] = file:/Users/lukas/.m2/repository/org/sonatype/sisu/sisu-inject-bean/1.4.3.1/sisu-inject-bean-1.4.3.1.jar
[ERROR] urls[12] = file:/Users/lukas/.m2/repository/org/sonatype/sisu/sisu-guice/2.9.1/sisu-guice-2.9.1-noaop.jar
[ERROR] urls[13] = file:/Users/lukas/.m2/repository/com/github/jlgrock/javascript-framework/maven-utils/1.18.1/maven-utils-1.18.1.jar
[ERROR] urls[14] = file:/Users/lukas/.m2/repository/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar
[ERROR] urls[15] = file:/Users/lukas/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.jar
[ERROR] urls[16] = file:/Users/lukas/.m2/repository/commons-lang/commons-lang/2.5/commons-lang-2.5.jar
[ERROR] urls[17] = file:/Users/lukas/.m2/repository/commons-io/commons-io/2.3/commons-io-2.3.jar
[ERROR] urls[18] = file:/Users/lukas/.m2/repository/log4j/log4j/1.2.16/log4j-1.2.16.jar
[ERROR] urls[19] = file:/Users/lukas/.m2/repository/junit/junit/4.11/junit-4.11.jar
[ERROR] urls[20] = file:/Users/lukas/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import  from realm ClassRealm[project>org.jboss.search.web-ui:core:0.9.0, parent: ClassRealm[maven.api, parent: null]]]

So it seems that code modification will be needed to allow this version of closure compiler.

lukas-vlcek avatar Jun 12 '14 07:06 lukas-vlcek

Trying all official releases from https://github.com/google/closure-compiler/wiki/Releases with the latest version of CJF (v1.18.1):

  • v20140508 :x: An API incompatibility was encountered while executing com.github.jlgrock.javascript-framework:closure-compiler-maven-plugin:1.18.1:js-closure-compile: java.lang.NoSuchFieldError: checkUnreachableCode
  • v20140407 :x: Seems to fail for the same reason as v20140508
  • v20140303 :question: Is not found in mvn repo?
  • v20140110 :question: Is not found in mvn repo?
  • v20131118 :question: Is not found in mvn repo?
  • v20131014 :white_check_mark: This is what CJF v1.18.1 uses by default, works fine.

Used MVN repo: http://mvnrepository.com/artifact/com.google.javascript/closure-compiler

Based on this, shall we release a new CJF version that can support both v20140407 and v20140508 (I assume it will be the same breaking change)?

Shall we also document which CJF versions can be used with which compiler versions?

lukas-vlcek avatar Jun 12 '14 08:06 lukas-vlcek

We should consider releasing new version based on recent compiler and library versions. Some exciting news are ahead. See https://plus.google.com/104107397146106399613/posts/Ws5Hi5B14si

lukas-vlcek avatar Nov 25 '14 17:11 lukas-vlcek