试图将我的GWT项目分成多个模块 - “你忘了继承一个必需的模块吗?”

时间:2013-12-30 00:09:57

标签: java maven gwt

这是我第一次尝试将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)看到它没有错。那么我在这个模块设置中缺少什么呢?

由于

1 个答案:

答案 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>