[英]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
:声明模块model
, logic
, analyze
, gwt
, tests
model
:无依赖性 logic
:无依赖性 analyze
:取决于model
, logic
gwt
:取决于model
, logic
tests
:取决于model
, logic
, analyze
, gwt
(包含全局测试,而非单元测试) 如果我在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运行它。 此示例的功能是:
我希望这至少可以为您提供一个可行的示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.