1

我有一个采用以下方法的多模块 GWT 项目,但在开发模式下运行它时遇到问题。

这是POM文件的结构。

父 POM

<project>
    <groupId>com.mycmp</groupId>
    <artifactId>com.mycmp.xt</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>
    <modules>
        <module>../com.mycmp.xt.dm</module>
        <module>../com.mycmp.xt.pc</module>
        <module>../com.mycmp.xt.re</module>
        <module>../com.mycmp.xt.rev</module>
        <module>../com.mycmp.xt.webapp</module>
        <module>../com.mycmp.xt.services</module>
    </modules>
    <dependencies>
    </dependencies>
    <build>
        <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>gwt-maven-plugin</artifactId>
                <version>2.5.1</version>
        </plugin>
    </build>
</project>

从模块中,

  • xt.dm是一个共享的 GWT 模块,所以我将它作为 JAR 包。
  • xt.pc是一个 GUI GWT 模块(只有 GUI 代码,所有 RPC 代码都存在于 web app 模块中)
  • xt.re是另一个 GUI GWT 模块(与xt.pc相同)
  • xt.rev是另一个 GUI GWT 模块(与xt.rev相同)
  • xt.services是我们的服务器端服务层(JAR 包)
  • xt.webapp是我们的 web 应用(web.xmlappcontext.xml等所在的位置)(WAR 包)

我正在考虑以下问题:

  • 这是正确的方法吗?

  • 我将如何打包所有这些以从单个 Tomcat 实例运行?

  • 我将如何在开发模式下运行xt.pc?(我尝试在xt.pc pom.xmlrunTarget下标记,但没有用。我认为冲突在于合并xt.webappxt.pc(它们都有 GWT 代码)。

4

1 回答 1

1

第三个问题:在制作模块时,请记住,您从不同模块提供的资源不是从模块内的文件中附加的,而是从它们的 jar 中附加的。因此,当您在 gui 应用程序中使用来自另一个模块的代码并更改该模块内的代码时,您将需要重新编译该模块,因为 dev 模式将从 jar 和您开始使用 dev 的项目的源代码中编译运行代码模式。

例如:你有一个名为 A 的父模块。这个父模块包含两个模块 B 和 C。在 C 中你有一些公共类。在 B 中,您已经使用入口点实现了整个 gui。同样在模块 B 的 pom 中,您在构建部分添加了 gwt-maven-plugin。当您在开发模式下从模块 B 启动项目时,您在 B 模块中所做的任何更改都会在您刷新网页时反映在网页上。但是,如果您修改模块 C 中的任何类,则在重新启动开发模式并重建模块 C 之后,这些更改将可见因为刷新网页不会重新构建作为依赖项的模块。

但是,我不知道当您在 gwt-maven-plugin 的配置标签中指定模块后从父 pom 启动它时,开发模式将如何表现。

于 2013-06-25T13:51:43.303 回答