【问题标题】:Maven Compilation for GWT 2.7 SOYC FailsGWT 2.7 SOYC 的 Maven 编译失败
【发布时间】:2015-01-18 02:15:08
【问题描述】:

如何在 2.7 中生成 GWT Soyc 报告?

使用以下原型命令创建的 GWT 2.7 maven 项目。

mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo -DarchetypeArtifactId=gwt-maven-plugin -DarchetypeVersion=2.7.0

我正在尝试为其生成大豆报告。我尝试了 2 种方法,但都未能创建 soyc 报告。此功能是否已废弃。

方法 1 - 我尝试在 pom.xml 中使用配置参数

            <compilerMetrics>true</compilerMetrics>
            <compileReport>true</compileReport>
            <detailedSoyc>true</detailedSoyc>

方法 2 - 我尝试使用 mvn 命令行参数

mvn -Dgwt.compiler.soycDetailed=true clean install

但是,构建通过而没有创建 soyc 并出现以下异常

[INFO] Compiling module com.appbootup.explore.gwt.HelloGWTApp
[INFO]    Compiling 5 permutations
[INFO]       Compiling permutation 0...
[INFO]       Process output
[INFO]          Compiling
[INFO]             Compiling permutation 1...
[INFO]       Process output
[INFO]          Compiling
[INFO]             Compiling permutation 4...
[INFO]       Process output
[INFO]          Compiling
[INFO]             Compiling permutation 2...
[INFO]       Process output
[INFO]          Compiling
[INFO]             Compiling permutation 3...
[INFO]       Creating Stories file for the compile report
[INFO]          [ERROR] Could not write dependency file.
[INFO] java.util.EmptyStackException
[INFO]  at java.util.Stack.peek(Stack.java:102)
[INFO]  at com.google.gwt.core.ext.soyc.impl.StoryRecorder.analyzeFragment(StoryRecorder.java:179)
[INFO]  at com.google.gwt.core.ext.soyc.impl.StoryRecorder.recordStoriesImpl(StoryRecorder.java:132)
[INFO]  at com.google.gwt.core.ext.soyc.impl.StoryRecorder.recordStories(StoryRecorder.java:73)
[INFO]  at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.makeSoycArtifacts(JavaToJavaScriptCompiler.java:619)
[INFO]  at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.addSoycArtifacts(JavaToJavaScriptCompiler.java:479)
[INFO]  at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.addSyntheticArtifacts(JavaToJavaScriptCompiler.java:501)
[INFO]  at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.compilePermutation(JavaToJavaScriptCompiler.java:357)
[INFO]  at com.google.gwt.dev.jjs.MonolithicJavaToJavaScriptCompiler.compilePermutation(MonolithicJavaToJavaScriptCompiler.java:296)
[INFO]  at com.google.gwt.dev.jjs.UnifiedAst.compilePermutation(UnifiedAst.java:143)
[INFO]  at com.google.gwt.dev.CompilePerms.compile(CompilePerms.java:197)
[INFO]  at com.google.gwt.dev.ThreadedPermutationWorkerFactory$ThreadedPermutationWorker.compile(ThreadedPermutationWorkerFactory.java:50)
[INFO]  at com.google.gwt.dev.PermutationWorkerFactory$Manager$WorkerThread.run(PermutationWorkerFactory.java:74)
[INFO]  at java.lang.Thread.run(Thread.java:745)
[INFO]             Creating Stories file for the compile report
[INFO]                [ERROR] Could not write dependency file.
[INFO]          java.util.EmptyStackException
[INFO]              at java.util.Stack.peek(Stack.java:102)
[INFO]              at com.google.gwt.core.ext.soyc.impl.StoryRecorder.analyzeFragment(StoryRecorder.java:179)
[INFO]              at com.google.gwt.core.ext.soyc.impl.StoryRecorder.recordStoriesImpl(StoryRecorder.java:132)
[INFO]              at com.google.gwt.core.ext.soyc.impl.StoryRecorder.recordStories(StoryRecorder.java:73)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.makeSoycArtifacts(JavaToJavaScriptCompiler.java:619)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.addSoycArtifacts(JavaToJavaScriptCompiler.java:479)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.addSyntheticArtifacts(JavaToJavaScriptCompiler.java:501)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.compilePermutation(JavaToJavaScriptCompiler.java:357)
[INFO]              at com.google.gwt.dev.jjs.MonolithicJavaToJavaScriptCompiler.compilePermutation(MonolithicJavaToJavaScriptCompiler.java:296)
[INFO]              at com.google.gwt.dev.jjs.UnifiedAst.compilePermutation(UnifiedAst.java:143)
[INFO]              at com.google.gwt.dev.CompilePerms.compile(CompilePerms.java:197)
[INFO]              at com.google.gwt.dev.CompilePermsServer.compilePermutation(CompilePermsServer.java:319)
[INFO]              at com.google.gwt.dev.CompilePermsServer.run(CompilePermsServer.java:283)
[INFO]              at com.google.gwt.dev.CompilePermsServer.main(CompilePermsServer.java:246)
[INFO]             Creating Stories file for the compile report
[INFO]                [ERROR] Could not write dependency file.
[INFO]          java.util.EmptyStackException
[INFO]              at java.util.Stack.peek(Stack.java:102)
[INFO]              at com.google.gwt.core.ext.soyc.impl.StoryRecorder.analyzeFragment(StoryRecorder.java:179)
[INFO]              at com.google.gwt.core.ext.soyc.impl.StoryRecorder.recordStoriesImpl(StoryRecorder.java:132)
[INFO]              at com.google.gwt.core.ext.soyc.impl.StoryRecorder.recordStories(StoryRecorder.java:73)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.makeSoycArtifacts(JavaToJavaScriptCompiler.java:619)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.addSoycArtifacts(JavaToJavaScriptCompiler.java:479)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.addSyntheticArtifacts(JavaToJavaScriptCompiler.java:501)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.compilePermutation(JavaToJavaScriptCompiler.java:357)
[INFO]              at com.google.gwt.dev.jjs.MonolithicJavaToJavaScriptCompiler.compilePermutation(MonolithicJavaToJavaScriptCompiler.java:296)
[INFO]              at com.google.gwt.dev.jjs.UnifiedAst.compilePermutation(UnifiedAst.java:143)
[INFO]              at com.google.gwt.dev.CompilePerms.compile(CompilePerms.java:197)
[INFO]              at com.google.gwt.dev.CompilePermsServer.compilePermutation(CompilePermsServer.java:319)
[INFO]              at com.google.gwt.dev.CompilePermsServer.run(CompilePermsServer.java:283)
[INFO]              at com.google.gwt.dev.CompilePermsServer.main(CompilePermsServer.java:246)
[INFO]             Creating Stories file for the compile report
[INFO]                [ERROR] Could not write dependency file.
[INFO]          java.util.EmptyStackException
[INFO]              at java.util.Stack.peek(Stack.java:102)
[INFO]              at com.google.gwt.core.ext.soyc.impl.StoryRecorder.analyzeFragment(StoryRecorder.java:179)
[INFO]              at com.google.gwt.core.ext.soyc.impl.StoryRecorder.recordStoriesImpl(StoryRecorder.java:132)
[INFO]              at com.google.gwt.core.ext.soyc.impl.StoryRecorder.recordStories(StoryRecorder.java:73)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.makeSoycArtifacts(JavaToJavaScriptCompiler.java:619)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.addSoycArtifacts(JavaToJavaScriptCompiler.java:479)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.addSyntheticArtifacts(JavaToJavaScriptCompiler.java:501)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.compilePermutation(JavaToJavaScriptCompiler.java:357)
[INFO]              at com.google.gwt.dev.jjs.MonolithicJavaToJavaScriptCompiler.compilePermutation(MonolithicJavaToJavaScriptCompiler.java:296)
[INFO]              at com.google.gwt.dev.jjs.UnifiedAst.compilePermutation(UnifiedAst.java:143)
[INFO]              at com.google.gwt.dev.CompilePerms.compile(CompilePerms.java:197)
[INFO]              at com.google.gwt.dev.CompilePermsServer.compilePermutation(CompilePermsServer.java:319)
[INFO]              at com.google.gwt.dev.CompilePermsServer.run(CompilePermsServer.java:283)
[INFO]              at com.google.gwt.dev.CompilePermsServer.main(CompilePermsServer.java:246)
[INFO]             Creating Stories file for the compile report
[INFO]                [ERROR] Could not write dependency file.
[INFO]          java.util.EmptyStackException
[INFO]              at java.util.Stack.peek(Stack.java:102)
[INFO]              at com.google.gwt.core.ext.soyc.impl.StoryRecorder.analyzeFragment(StoryRecorder.java:179)
[INFO]              at com.google.gwt.core.ext.soyc.impl.StoryRecorder.recordStoriesImpl(StoryRecorder.java:132)
[INFO]              at com.google.gwt.core.ext.soyc.impl.StoryRecorder.recordStories(StoryRecorder.java:73)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.makeSoycArtifacts(JavaToJavaScriptCompiler.java:619)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.addSoycArtifacts(JavaToJavaScriptCompiler.java:479)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.addSyntheticArtifacts(JavaToJavaScriptCompiler.java:501)
[INFO]              at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.compilePermutation(JavaToJavaScriptCompiler.java:357)
[INFO]              at com.google.gwt.dev.jjs.MonolithicJavaToJavaScriptCompiler.compilePermutation(MonolithicJavaToJavaScriptCompiler.java:296)
[INFO]              at com.google.gwt.dev.jjs.UnifiedAst.compilePermutation(UnifiedAst.java:143)
[INFO]              at com.google.gwt.dev.CompilePerms.compile(CompilePerms.java:197)
[INFO]              at com.google.gwt.dev.CompilePermsServer.compilePermutation(CompilePermsServer.java:319)
[INFO]              at com.google.gwt.dev.CompilePermsServer.run(CompilePermsServer.java:283)
[INFO]              at com.google.gwt.dev.CompilePermsServer.main(CompilePermsServer.java:246)
[INFO]    Compile of permutations succeeded
[INFO]    Compilation succeeded -- 14.936s
[INFO] Linking into D:\workspace\GWork\hello-gwt-app\target\hello-gwt-app-1.0-SNAPSHOT\HelloGWTApp; Writing extras to D:\workspace\GWork\hello-gwt-app\target\extra\HelloGWTApp
[INFO]    Link succeeded
[INFO]    Linking succeeded -- 0.873s

【问题讨论】:

    标签: gwt-2.7


    【解决方案1】:

    尝试删除详细的 Soyc 参数。我也遇到了这个问题;我生成 SOYC 没问题,然后它开始失败,所以我调整了我的设置,直到我得到 SOYC。启用 json soyc 并禁用详细的 Soyc 后,我仍然可以获得大量详细信息,显示我的编译大小来自何处。

    这是我目前使用的:

    -XjsInteropMode JS -XmethodNameDisplayMode NONE -Xnamespace NONE
    -style OBFUSCATED -sourceLevel 1.8 -compileReport -XnocompilerMetrics
    -XnocheckCasts -XnoclassMetadata -XclusterFunctions -XinlineLiteralParameters
     -XoptimizeDataflow -noincrementalCompileWarnings -XenableJsonSoyc 
    -nooverlappingSourceWarnings -saveSource -soycReport -XnodetailedSoyc 
    -optimize 9 -setProperty compiler.stackMode=strip net.wetheinter.webcomponent.GwtcTest
    

    请注意,其他偶然发现此问题的人,我在 EmptyStackException 上设置了一个 java 异常断点,发现空堆栈似乎发生在 LongLibBase 周围。这可能是一个编译器错误,因为这是一个内部类,通常与其他类不同。

    【讨论】:

    • 为了记录,我也在一个 Maven 容器中运行,尽管是通过 jetty:run。也许 Plexus 类加载器与它有关,但我们会看看是否有其他人参与此事。
    • 由于我正在尝试使用 RPC 和拆分点详细信息获取完整报告,因此我不能忽略 soycDetailed 标志。
    • 您是否尝试过不带该标签并查看您得到的详细信息?如果您仍然无法获得有用的信息,我可以在明天的会议上询问。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    相关资源
    最近更新 更多