2011-09-28 45 views
2

依赖解析最近,我拆我的GWT 2.4的应用程序分成两个模块的Maven:的webapp。域模块(根据其名称)包含域类,webapp包含所有其他GWT相关的东西。 Webapp取决于域名。如这里所描述多模块的Maven GWT项目 - 在托管模式问题

一切都几乎相同: http://mojo.codehaus.org/gwt-maven-plugin/user-guide/multiproject.html

当I(从反应器)运行:

mvn clean package 

行家适当地构建应用程序WAR:第一它编译,然后web应用,接下来创建可以在tomcat上部署的war文件并且工作正常。 不过,如果我尝试在托管模式下运行的应用程序:

mvn gwt:run 

行家尝试解决依赖于模块在我的本地库和远程存储库。由于我从本地回购中删除了它,maven无法找到它并且构建(托管模式)失败。当然,我可以首先将域名模块安装到我的本地回购站中,但它对我来说似乎是一种肮脏的解决方法。 域名已故意从本地maven存储库中删除,以确保托管模式运行时使用从本地回购获取的旧(过时)版本,而不是使用之前构建的域名域名。

如果模块安装在我的本地库,完成后mvn clean package的webapp目标目录包含爆炸WAR与最新版本 JAR的。当我运行gwt:run时,新版本的域神器(在目标中)被替换为从本地回购中获得的过时版本(我可以看到更改)!

这怎么可能?这是gwt maven插件中的错误吗?有什么办法可以避免这种奇怪的插件行为?

+0

这不就是Maven如何工作?除非你使用_reactor_模块,否则你必须在你的本地仓库中安装你的依赖关系。 –

+0

@Thomas但是如果我创建了GWT WAR包,我希望gwt:run中的maven插件使用这个包中包含的库(它们的最新版本),而不是从库中获取它们(因为'mvn package'不会安装它们,回购版本可能已过时)。我并不是说从web应用程序WAR中检索域库,而只是使用新建的域包。这听起来很合理,但也许我错了。 –

+0

如果我能告诉Maven在子模块上运行目标,但使用“兄弟”子模块的依赖关系,而不是从回购站中解析它们,我会喜欢它。不幸的是,我还没有找到如何去做,而且我高度怀疑这根本不可能,而且人们整天都在进行“mvn安装”。 –

回答