我有一个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
:声明模块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
是战争lib文件夹里面,无论包装和解压,也内djjeck.model/target
。
我得到一个'无法解决项目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
你必须依赖于来自webapp模块的域。 – milan 2011-12-29 17:30:55
我认为设置了依赖关系,这就是它寻找jar的原因。我正在更新OP。 – djjeck 2011-12-29 19:30:29