在GWT应用程序中,我们有一个“共享”包,顾名思义,它包含客户端和服务器端代码之间共享的对象。 我们有一个多模块maven项目:
+ server
| |
| + businessLogicPackage
|
+ gwt
|
+ client
|
+ server
| |
| + converter
| |
| + rpc
|
+ shared
每次我需要在服务器模块中重用共享对象时,我需要使用位于gwt / server / converter中的某个转换器来转换共享对象。 我尝试使用继承并让共享对象从server / businessLogicPackage继承类,以为我可以通过简单的转换操作来逃避。这会产生错误。显然GWT无法从外部模块编译源代码。
> No source code is available for type server.businessLogicPackage.x; did you forget to inherit a required module ?
知道:
有人可以与我分享一些最佳做法/替代方案吗? 2014年的时尚潮流是什么?
答案 0 :(得分:1)
您的问题是使用gwt模块中的类和服务器模块中的共享包而无需手动转换?
您可以简单地创建一个名为shared的第三个模块,例如包含gwt客户端和服务器模块使用的类。
gwt和服务器模块依赖于这个新的共享模块。
要使GWT能够访问源,您可以向新模块添加MySharedModuleName.gwt.xml
并将其包添加为源。在您的GWT模块中,为MySharedModuleName
添加继承标记。
然后,GWT需要访问来源。如果您创建它,可以在gwt模块中添加依赖项到源jar:<classifier>sources</classifier>
。或者在共享模块中添加目标gwt:resources以在jar中包含源。
答案 1 :(得分:0)
最后我将源添加到已编译的jar中,因此只向POM添加一个依赖项(没有分类器)就足够了。我的GWT模块继承自&#34;共享&#34;的GWT模块。由Nicolas Morel提出的maven-module。
<build>
<resources>
<resource>
<directory>${project.build.sourceDirectory}</directory>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
</resources>
</build>