簡體   English   中英

嘗試將我的GWT項目拆分為多個模塊-“您是否忘記了繼承必需的模塊?”

[英]Trying to split my GWT project into multiple modules - “did you forget to inherit a required module?”

這是我第一次嘗試將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)沒有錯。 那么我在此模塊設置中缺少什么?

謝謝

您不需要直接依賴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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM