如何将 maven 托管依赖项复制到 war\web-inf\lib 中,以便在 Eclipse 中以调试模式运行 GWT 2.0 应用程序?

2022-09-03 14:43:23

我正在将现有项目从GWT 1.5.2更新到GWT 2.0.0。我们使用 maven 2 来管理我们的依赖关系,并在 Eclipse 3.5 中完成所有开发。

因为我们使用 maven 来管理我们的依赖关系,所以我没有 GWT 指定的 war\web-inf\lib 目录中的所有 jar。相反,它们位于 maven 存储库中,就在 maven 喜欢它们的地方。我设置了项目,以便maven可以在开发或Web模式下成功构建和启动,并且应用程序可以正常运行。

问题是,当我从Eclipse启动时,我得到了一个java.lang.NoClassDefFoundError。如果我在启动之前手动将我的依赖项复制到war\web-inf\lib中,一切都运行良好,但这不适合长期解决方案。首先,如果我将所有这些jar检查到我们的版本控制中,这将破坏我们从maven获得的大部分价值。尽管maven很烦人,但放弃它不是答案。其次,让开发人员在每次想要调试某些内容时手动复制它们是荒谬的。

那么,我可以让 Eclipse 在启动之前将依赖项复制到 war\web-inf\lib 中吗?是否有我缺少的替代解决方案?

谢谢

托尼


答案 1

运行目标会将 maven 依赖项复制到 中。有关更多详细信息,请参阅 Maven GWT 插件Eclipse IDE 集成文档的 Eclipse Configuration 部分。也看看这个关于Maven GWT 2.0和Eclipse的答案gwt:eclipsewar/WEB-INF/lib


答案 2

您应该安装 m2eclipse 插件,并使用它来在 eclipse 中构建您的项目。这将从 eclipse 内部调用 maven 作为外部工具。

您的 maven 项目工件类型应设置为 war,这将使 maven 发现依赖项并将它们捆绑在一起。

请参阅以下链接:

强制 Maven2 将依赖项复制到目标/库中

http://maven.apache.org/plugins/maven-war-plugin/

http://maven.apache.org/plugins/maven-war-plugin/examples/rapid-testing-jetty6-plugin.html


推荐