0

我尝试更改为 gwt2.4 的发布版本并遇到问题。我在我的设置中使用了多个项目。我有一个带有服务器端代码的项目,一个带有共享代码的项目,可以在不同的 gwt 项目中使用,还有一个 gwt 项目将所有内容绑定在一起。我用 Maven 构建一切。我按照此处的注释处理说明进行操作: http ://code.google.com/p/google-web-toolkit/wiki/RequestFactoryInterfaceValidation

当我编译代理和服务所在的共享项目时,会创建带有 DeobfuscatorBuilder.java 的文件夹“generated-sources\apt\”。我将这个项目的源代码作为我的主项目的依赖项,并尝试运行验证器,但此处未创建 DeobfuscatorBuilder.java。一切都可以编译,但是当我调用 requestfactory 时,我得到了错误:

com.google.web.bindery.requestfactory.server.UnexpectedException: No RequestContext for operation ZwI9iqZS626uTt_TFwRtUwPYSOE=

我想我的设置有错误,但我找不到..有人知道如何解决这个问题吗?

问候阿恩

更新:

我将此添加到我的 pom 中:

           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>

                <executions>
                    <execution>
                        <id>unpack</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>unpack</goal>
                            <!-- <goal>build-classpath</goal> -->
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>com.myproject.core</groupId>
                                    <artifactId>shared</artifactId>
                                    <version>${shared.version}</version>
                                    <classifier>sources</classifier>
                                    <overWrite>true</overWrite>
                                    <outputDirectory>${project.build.directory}/com.myproject.shared</outputDirectory>
                                </artifactItem>
                                </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

这会解压缩我的依赖项的源并将它们放入我的目标文件夹中。然后我补充说:

            <configuration>
                <sourceDirectory>target/com.fileee.shared</sourceDirectory>
            </configuration>

到我的处理器插件。

这样就不必将所有项目都放在工作区中,它应该与持续集成系统一起工作。不过,如果没有安迪斯的回复,就不会想到这一点:)

4

1 回答 1

1

我遇到了同样的问题,花了几个小时在网上搜索答案,但没有任何运气。如果我将处理器插件添加到共享项目中,它会生成 DeobfuscatorBuilder 类,但我会得到与您相同的 No RequestContext 异常。如果我在 GWT 战争项目中只有处理器插件,则根本不会生成构建器。

经过大量的试验和错误,我发现将共享项目中的源目录添加到战争项目的处理器插件配置中工作...... http://code.google.com/p/android-shuffle/source/browse /shuffle-app-engine/pom.xml#269

它有点脏,但它可以解决问题。如果有不需要跨项目黑客的官方方法,我非常欢迎切换,但我还没有看到任何建议。

干杯安迪

于 2011-11-19T09:52:46.920 回答