使用Maven的GWT多模块项目

时间:2013-06-25 00:02:52

标签: gwt gwt-maven-plugin

我有一个多模块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应用程序模块中)
  • xt.re 是另一个GUI GWT模块(与 xt.pc 相同)
  • xt.rev 是另一个GUI GWT模块(与 xt.rev 相同)
  • xt.services 是我们的服务器端服务层(JAR包)
  • xt.webapp 是我们的网络应用(其中 web.xml appcontext.xml 等等)(WAR包)

我正在考虑以下问题:

  • 这是正确的做法吗?

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

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

1 个答案:

答案 0 :(得分:1)

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

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

但是,在gwt-maven-plugin的配置标记中指定模块之后,当你从父pom启动它时,我不知道开发模式的行为方式。