0

我一直在努力尝试将 RemoteService 实现从一个 GWT 项目重用到一个新项目中。这是大图:

我有一个正在工作的 smartgwt-mobile 项目,我们现在决定我们想要一个相同项目的桌面版本,使用常规的 smart-gwt。这个新应用程序的 GUI 显然会有所不同,但服务器端代码将完全相同。

我试图通过链接新源结构中另一个项目中的包文件夹(我正在使用带有 GWT 插件的 Eclipse)或添加借用的代码路径来“借用” RemoteService 接口、它的异步对应物和整个服务器包作为构建路径的过滤源文件夹,虽然这满足 Eclipse 依赖项检查器,但 GWT 编译器无法找到借用的代码,这表明我需要在模块 .gwt.xml 文件中添加“继承”声明。

当我这样做并重新编译它时,现在需要在借用代码的根目录中添加第二个模块 .gwt.xml 文件,这是不可接受的,因为它会影响其他项目。

我一直在阅读 GWT 模块文档,但我看不到如何实现这样的方案。实际上可能无法做到我想要实现的目标。

如果这能解决问题,我愿意创建第三个项目,该项目仅定义一个 GWT RemoteService 模块,然后移动和桌面 smartgwt 项目都将继承该模块。

有人对如何解决这个问题有建议吗?

4

2 回答 2

1

我同意 "third project that simply defines a GWT RemoteService module that then will be inherited by both the mobile and desktop smartgwt projects"

为什么,因为,我已经在这样做了。是的,这显然是一个DAO项目(数据库层),其中包含我所有的数据库业务逻辑方法。

并且它总是更好地保持分开来DAO layer暴露你。dataservices(ex.webservices)

于 2013-03-02T11:31:51.350 回答
0

所以这就是我解决问题的方法。链接到现有 GWT 项目源文件夹的问题在于 GWT 编译器总是(至少看起来是这样)期望找到 GWT 模块定义文件 (.gwt.xml)。我无法以 GWT 编译器满意的方式链接源文件夹,即使 Eclipse 依赖解析器对此没有问题。

所以我使用 GWT Eclipse 插件创建了第三个项目。我取消选中“创建示例代码”选项,所以我最终得到了一个空的 GWT 项目。然后我选择“添加”>“新建”>“其他”>“Google”>“模块”,输入模块名称,例如“myModule”,包名称,例如“com.myCompany.myModule”,然后单击“完成” . GWT 新模块向导创建了包和一个名为“com.myCompany.myModule.client”的子包,我自己创建了“com.myCompany.myModule.server”。

现在我复制了 RemoteService 和相关类(实现和 Async 版本),加上我想借用的原始项目中 RemoteService 代码调用的所有服务器端代码,并将其粘贴到新项目中。很快我就满足了所有依赖项,并在新的 Smart-GWT Web 应用程序项目中打开了“构建路径”对话框,并将 GWT 远程服务模块项目包含在项目选项卡中。最后要做的是在 .gwt.xml 文件中添加一个继承元素:

<inherits name='com.myCompany.myModule.MyModule'/>

瞧:就是这样。如果您选择“GWT 编译项目”,它将在开发模式下编译并运行而不会出现警告。

我现在仍然必须从第一个项目中删除共享代码并从模块继承,这只是对我已经做过的事情的重复。

最后,这并没有我想象的那么痛苦,所以我推荐这种方法。

于 2013-03-04T17:37:27.413 回答