2011-03-08 36 views
7

我有一个很大的多模块Maven项目,其中一小部分是GWT中的一个Web GUI。我正在使用,但我不确定如何使我的开发高效。如何在GWT Maven多模块项目中提高生产力

现在我在开发GWT项目中的东西时正在运行托管模式,并且如果我在此处更改某些内容,则可以在重新加载页面时立即看到更改。但是,如果在保存大部分后端逻辑的maven模块中发生了某些变化,我需要在整个项目结构上执行mvn:install,然后再执行gwt:run以再次启动托管模式。非常耗时...

我试图按照这里的说明:http://mojo.codehaus.org/gwt-maven-plugin/user-guide/project.html#Multi-project_setup但它不能按预期方式工作。

是否可以立即看到依赖maven模块中所做的更改,如果是这样 - 应如何编写pom文件?

+0

如果您满意的答案之一,请接受它作为有效。谢谢! – Thomas 2011-03-09 16:31:14

+0

我对能够做到这一点感兴趣 - 从我在这里和其他地方阅读的内容看,似乎我的获得多模块Maven安装程序以提高GWT效率的可能性并不是太好。 – 2012-05-18 21:30:52

回答

4

如果您使用的是Eclipse和m2eclipse,则可以将项目配置为resolve dependencies from workspace。引用m2eclipse手册:

您可以配置一个项目来解析来自工作区的依赖关系。这具有改变Maven查找依赖性工件的方式的效果。如果一个项目被配置为解决从工作区的依赖性,这些文物并不需要存在于你的本地库

有了这个设置就没有必要调用mvn:install对相关模块。我一直在使用这个设置和JRebel,以便在多模块maven项目中立即重新加载类已经有一段时间了。

+1

我以前一直在其他项目上使用JRebel,它通常工作得很好。但是,当我将它与GWT混合在一个单独的Maven模块中时,我还没有方便地使用它。在处理GWT和JRebel时你有什么经验吗? – thorseye 2011-03-09 13:51:33

+0

我在过去的1.5年中一直使用Apache Wicket,并且它能够与Maven和JRebel完美协作。我也尝试过使用GWT构建的Vaadin,但是我从来没有在GWT专用的应用中使用它。 – Thomas 2011-03-09 14:07:51

+0

嗯,你有一个很好的观点,但它似乎无法与GWT正常工作。也许我做错了什么。我的所有服务器代码都被JRebel监视,但是当谈到GWT项目中的所有代码时,JRebel没有看到任何更改。我在我的所有项目中都有一个由Maven生成的rebel.xml文件(我猜这是要走的路)。所以我仍然不满意我的项目设置,这就是为什么你的答案尚未被接受。 – thorseye 2011-03-10 19:18:28

0

关联的maven子模块是必须位于WEB-INF/lib目录中的库依赖项。您必须在顶层执行mvn:install的原因是,您必须在构建关联的子模块时重新生成该jar,然后在打包war时将其复制到WEB-INF/lib目录中项目发生。

如果您可以想出一种方法让您的IDE或其他工具自动更新WEB-INF/lib目录中的JAR,那么您应该很好。您可以尝试让您的IDE将您的关联项目自动编译为WEB-INF/lib目录下的分解JAR结构。它将取决于你的Web容器是否会被拾取。我认为Tomcat可能会适合这一点,但我不确定Jetty。我很快就会尝试这个。

1

从工作区解决依赖关系不适合我。

我的解决方案:手动将后端项目依赖项添加到运行配置中。

+0

你能再解释一下吗?我不明白你的意思。 – thorseye 2011-04-06 06:42:22

+2

RunConfiguration截图:http://bit.ly/hWxaF9 – averet 2011-04-13 15:05:34