GWT责备RequestFactory ValidationTool必须在启动主项目时在子模块(项目)上运行

时间:2013-03-13 01:49:38

标签: gwt maven requestfactory google-plugin-eclipse gwt-maven-plugin

GWT 2.5.0 / Google Plugin for Eclipse / m2e / GWT-maven-plugin 2.5.0 / Request Factory

我根据GWT wiki working with maven配置我的项目并且它工作得很好,但在我的子项目中遇到了一些麻烦。

假设我有两个项目A和B,A是一个标准的GWT项目,B是子项目并且有一个GWT模块,它包含一些常见的UI小部件和一些常见的Entity代理和RequestFactory,一个项目依赖于B项目通过Maven依赖,以及在A的Module.gwt.xml中,B模块有一个继承。

问题是当我尝试使用GPE来推动一个项目时,它指责:

The RequestFactory ValidationTool must be run for the … XXXRequestFactory type

XXXRequestFactory在B项目中。我必须在Eclipse中关闭项目B,所以它不会归咎于,当我想修改B项目中的某些内容时,这很麻烦,在A中用来查看更改,我必须关闭B然后查看更改,然后打开B和做了改变......

我想知道是否有办法解决这个问题,这样我的生活会更轻松。 谢谢。

还有一件事,我还在项目B中使用maven-processor-pluginbuild-helper-maven-plugin,并确保在我在B上调用maven install时运行目标,但似乎没有帮助。

1 个答案:

答案 0 :(得分:0)

我也有这个问题,这是修复此问题的解决方案。这个答案假定您需要以开发模式执行GWT应用程序(正如您提到的尝试使用gwt eclipse插件)

  1. 您可能已经知道RequestFactory必须在执行前验证接口,域类型和代理。因此,您需要为此启用注释处理,除了上述验证之外,还会为服务器端组件创建映射数据。如果此过程未成功,则会抛出您提到的错误。

  2. 您可以在项目属性中启用项目B的requestfactory验证。转到编译器属性,启用注释处理,提供requestfactory-apt.jar的路径。在编译项目之后,您可以在项目主目录中看到包含映射文件的.apt_generated。如果您打开其中一个,则可以看到代理生成的映射。

  3. 启动应用程序(在您的情况下为项目A),它应该没有任何错误地运行

  4. 在Maven世界中,您必须指定此apt jar的依赖项。除此之外,在执行mvn compile时,您可能会在这些生成的类中遇到编译器错误,要解决此问题,只需删除.apt_generated中的内容即可。