GWT多模块项目与Maven

GWT多模块项目与Maven,gwt,gwt-maven-plugin,Gwt,Gwt Maven Plugin,我有一个采用以下方法的多模块GWT项目,但在开发模式下运行它时遇到了问题 下面是POM文件的结构 母体聚甲醛 <project> <groupId>com.mycmp</groupId> <artifactId>com.mycmp.xt</artifactId> <version>1.0.0</version> <packaging>pom</packaging&

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

下面是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>

com.mycmp
com.mycmp.xt
1.0.0
聚甲醛
../com.mycmp.xt.dm
../com.mycmp.xt.pc
../com.mycmp.xt.re
../com.mycmp.xt.rev
../com.mycmp.xt.webapp
../com.mycmp.xt.services
org.codehaus.mojo
GWTMaven插件
2.5.1
从模块中

  • dm是一个共享的GWT模块,因此我将其作为JAR包
  • pc是一个GUI GWT模块(只有GUI代码,所有RPC代码都存在于web应用程序模块中)
  • re是另一个GUI GWT模块(与xt.pc相同)
  • rev是另一个GUI GWT模块(与xt.rev相同)
  • 服务是我们的服务器端服务层(JAR包)
  • webapp是我们的web应用程序(web.xml和appcontext.xml等位于其中)(WAR包)
我在思考以下问题:

  • 这是正确的方法吗

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

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

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

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

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

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

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


然而,我不知道当你在gwt maven插件的配置标签中指定模块后,从父pom启动开发模式时,开发模式将如何运行。

对不起,没有时间写完整的答案,但以下是我对gwt和maven的看法(使用多模块构建):(公告:)@ThomasBroyer我相信我在这方面取得了很好的进展。但是当我使用gwt:run-Ddev运行客户端模块时,它打开了gwt开发模式。现在访问应用程序的正确url是什么。客户端pom没有任何相关的模块html。我还收到一个警告“[警告]您的POM与GWT托管浏览器的托管webapp WEB-INF/classes文件夹不匹配,无法查看您的类。“.当我访问url时,我得到404@ThomasBroyer特别是,我不明白这在客户端pom文件中意味着什么。localhost:8080/如果您在*-服务器模块上更改Tomcat或Jetty的端口,请保持该属性同步;同样,如果您添加路径前缀。回答其他问题是的……这就成功了。我必须更改端口to 8085,在8080上运行了其他一些东西,导致404。谢谢@thomasbroyer抱歉,没有时间写完整的答案,但以下是我对GWT和Maven(使用多模块构建)的看法:(公告:)@ThomasBroyer我相信我在这方面取得了很好的进展。但是当我使用gwt:run-Ddev运行客户端模块时,它打开了gwt开发模式。现在访问应用程序的正确url是什么。客户端pom没有任何相关的模块html。我还收到一个警告“[警告]您的POM与GWT托管浏览器的托管webapp WEB-INF/classes文件夹不匹配,无法查看您的类。“.当我访问url时,我得到404@ThomasBroyer特别是,我不明白这在客户端pom文件中意味着什么。localhost:8080/如果您在*-服务器模块上更改Tomcat或Jetty的端口,请保持该属性同步;同样,如果您添加路径前缀。回答其他问题是的……这就成功了。我必须更改端口tO8085,有一些