这是我第一次尝试将GWT项目拆分为多个模块,而且遇到了困难。我的第一个项目包含一些常见的模型和ui代码;其模块XML如下:
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to="parentmodule">
<inherits name='com.google.gwt.user.User'/> <!-- core -->
<inherits name='com.google.common.base.Base'/> <!-- Preconditions -->
<inherits name='com.google.gwt.inject.Inject'/> <!-- GIN -->
<inherits name='com.ekuefler.supereventbus.SuperEventBus'/> <!-- event binding -->
<inherits name="com.google.gwt.logging.Logging"/> <!-- console logging -->
<source path='client'/>
<source path='shared'/>
</module>
Maven将其打包为JAR(parentmodule.jar)。
我想从几个子模块中依赖这个模块。所以,例如,我有:
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to="childmodule">
<inherits name='com.google.gwt.user.User'/>
<inherits name='com.foo.parentmodule'/> <!-- core -->
<source path='client'/>
<source path='shared'/>
<entry-point class='com.foo.Index'/>
</module>
我的问题是,当GWT编译器运行时,它无法解析常见的模型类;例如:
[INFO] [ERROR] Line 27: No source code is available for type com.foo.shared.model.User; did you forget to inherit a required module?
为了清楚起见,com.foo.shared.model.User位于parentmodule.jar中。 maven依赖关系设置正确; Java编译器(和我的IDE)看到它没有错。那么我在这个模块设置中缺少什么呢?
由于
答案 0 :(得分:3)
您无需直接依赖User
; GWT依赖是暂时的。问题似乎是您没有在parentmodule
jar中包含源代码,并且GWT需要所有依赖的模块的源代码。
有几种方法可以解决这个问题;我首选的方法是确定哪些Maven工件需要对GWT可见,然后将必要的源文件添加为Maven资源:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
<include>**/*.gwt.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>