多项目设置的Requestfactory验证

时间:2011-10-10 20:30:30

标签: gwt requestfactory annotation-processing multi-project gwt-2.4

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

当我编译代理和服务所在的共享项目时,会创建带有DeobfuscatorBuilder.java的文件夹“generated-sources \ apt \”。我将此项目的源代码作为我的mainproject的依赖项,并尝试运行验证程序,但此处未创建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>

到我的处理器插件。

这样就没有必要在工作区中拥有所有项目,它应该与连续集成系统一起使用。如果没有Andys回复,我不会想出来:)

1 个答案:

答案 0 :(得分:1)

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

通过大量的反复试验,我发现将共享项目中的源目录添加到war项目的处理器插件配置中... http://code.google.com/p/android-shuffle/source/browse/shuffle-app-engine/pom.xml#269

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

干杯 安迪