2011-12-29 58 views
2

我有一个multimodule maven安装程序,用于我的项目,由5个模块组成,其中包括一个GWT webapp。
它也是一个eclipse多项目工作区,所以我创建了一个额外的项目,只包含一个pom,它将其他项目(同级文件系统中的其他项目)列为子模块。
我也是一个新的maven用户,所以我可能做错了什么。 =)多项目GWT托管模式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> 

当我在聚甲醛项目,我得到预期的行为运行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是战争lib文件夹里面,无论包装和解压,也内djjeck.model/target

回答

3

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

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

看看maven GWT插件multi-module setup如果你仍然有问题。

+0

我得到一个'无法解决项目djjeck.gwt的依赖关系:djjeck.gwt:war:0.0.1-SNAPSHOT:找不到 artifact djjeck.model:djjeck.model:jar:0.0.1-SNAPSHOT' 。该jar既在该项目的目标文件夹内,也在war的lib文件夹内。它在哪里寻找它? – djjeck 2011-12-29 16:16:48

+0

你必须依赖于来自webapp模块的域。 – milan 2011-12-29 17:30:55

+0

我认为设置了依赖关系,这就是它寻找jar的原因。我正在更新OP。 – djjeck 2011-12-29 19:30:29

1

由于我还在使用GWT dev模式和带有多个子模块/项目的Maven项目,我创建了一个示例并将其上载到GitHub。你可以找到它:

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

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

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

我希望这有助于至少有一个工作的例子,从一开始。