繁体   English   中英

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

[英]GWT hosted mode in multiproject maven setup

我的项目有一个多模块Maven设置,由5个模块组成,其中包括一个GWT Web应用程序。
它也是一个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模块上运行gwt:run ,我会得到错误

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

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

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

如果您仍然遇到问题,请查看maven GWT插件多模块设置

由于我还在GWT开发人员模式和具有多个子模块/项目的Maven项目中苦苦挣扎,因此我创建了一个示例并将其上传到GitHub。 您可以在以下位置找到它:

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

以上页面的自述文件显示了如何通过Maven运行它。 此示例的功能是:

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

我希望这至少可以为您提供一个可行的示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM