jlgrock / ClosureJavascriptFramework

A group of plug-ins that can be used in conjunction with maven to execute the Google Closure Compiler on JavaScript code. This Framework allows for scaling and modularity.
MIT License
16 stars 7 forks source link

Closure Compiler upgrade #48

Open lukas-vlcek opened 10 years ago

lukas-vlcek commented 10 years ago

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 commented 10 years ago

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 commented 10 years ago

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

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 commented 9 years ago

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