多项目maven设置中的GWT托管模式

时间:2011-12-29 11:03:30

标签: java gwt maven

我的项目有一个多模块maven设置,由5个模块组成,其中包括一个GWT webapp。 它也是一个eclipse多项目工作区,所以我创建了一个额外的项目,只包含一个pom,它将其他项目(文件系统上的兄弟)列为子模块。
我也是一个新的maven用户,所以我可能做错了什么。 =)

gwt模块使用以下插件

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>2.4.0</version>
<executions>
    <execution>
        <goals>
            <goal>generateAsync</goal>
            <goal>compile</goal>
        </goals>
    </execution>
</executions>
<configuration>
    <hostedWebapp>war</hostedWebapp>
    <runTarget>GWT.html</runTarget>
</configuration>
</plugin>

当我在pom项目上运行mvn package时,我得到了预期的行为:项目按照正确的顺序构建,战争很好。
但是,当我运行mvn gwt:run时,maven尝试在每个模块上找到一个gwt应用程序,在第一个(父级)上失败,它甚至没有声明或管理gwt插件。
如果我运行mvn -fn gwt:run,则构建会在每个其他项目上失败,最终在gwt模块上找到gwt应用程序并显示它。

  • 如何在托管模式下正确运行应用程序?这是正确的行为吗?

我不希望GWT模块成为父模块(如果可能的话),因为项目有多个目标平台,产生gwt web前端,Java可执行jar后端,以及将来的Android应用程序,以及共享代码的大部分内容(不仅仅是模型)。推荐用于这种设置的单个pom结构,还是我在maven失败了?

我需要的配置文件是什么?如果我这样做,我应该在每个模块上声明相同的配置文件ID吗?我怎么能阻止gwt:run命令触发它们呢?

  • 这样一个项目的设置应该是什么?这是正确的设置吗?

其他信息

模块

  • pom:声明模块modellogicanalyzegwttests
  • model:没有依赖
  • logic:没有依赖
  • analyze:取决于modellogic
  • gwt:取决于modellogic
  • tests:取决于modellogicanalyzegwt(包含全局测试, 不是单元测试)

如果我在gwt:run模块上运行gwt,我会收到错误

Could not resolve dependencies for project
djjeck.gwt:djjeck.gwt:war:0.0.1-SNAPSHOT:
Could not find artifact djjeck.model:djjeck.model:jar:0.0.1-SNAPSHOT

这来自djjeck.gwt/pom.xml

<dependency>
    <groupId>djjeck.model</groupId>
    <artifactId>djjeck.model</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <scope>compile</scope>
</dependency>

com.model-0.0.1-SNAPSHOT.jar位于war lib文件夹中,包含打包和解包,也在djjeck.model/target内。

2 个答案:

答案 0 :(得分:3)

转到webapp模块,然后运行mvn gwt:run

您可以使用配置文件来加快编译时间:例如,一个配置文件只能为gecko和english + draftCompile编译gwt。

如果您仍然遇到问题,请查看maven GWT插件multi-module setup

答案 1 :(得分:1)

由于我还在使用GWT开发模式和一个包含多个子模块/项目的Maven项目,我创建了一个示例并将其上传到GitHub。您可以在以下网址找到它:

https://github.com/steinsag/gwt-maven-example

上面的自述文件显示了如何通过Maven运行它。这个例子的特点是:

  • 多个模块
  • 不使用GWT的嵌入式Jetty,而是使用自己的Tomcat7服务器
  • 通过记录的Maven命令启动Tomcat7和GWT托管模式

我希望这至少有一个工作实例可以帮助你开始。