在WEB-INF / lib中不可见的Maven依赖关系

我有这个奇怪的问题,使我的项目基于Maven的。 我在Eclipse中创build了一个新的Maven项目,并启用了Dynamic Web构面。 但是在运行时现在它会抛出ClassNotFoundException因为Maven依赖不会被复制到WEB-INF/lib目录中。 我甚至尝试在POM中添加复制依赖项部分,但没有帮助。

有人在这里似乎解决了这个正确的方式,但我想他忘了提到的解决scheme::(

这应该与eclipse和m2eclipse无关,并可以select更好的支持 – m2e-wtp 。 另外,您不需要复制依赖项。 以下是一些可能的原因:

  • 你应该调用mvn package (或者右键单击> maven>包)并获得一个war文件 – <packaging> pom <packaging>中的<packaging>必须是war
  • 您的依赖关系应该与默认范围(如果providedtest他们将不包括在档案中)
  • 如果您在eclipse中的服务器上运行项目作为dynamicWeb项目,那么您应该打开项目属性(右键单击>属性)并select“部署程序集”。 点击“添加”,select“构buildpath条目”,然后select“maven dependencies”。 这将指示WTP将maven依赖关系发送到服务器目录。

首先安装Maven Integration for Eclipse WTP (Help-> Eclipse Marketplace)

然后在你的web项目的pom.xml中添加:

  <packaging>war</packaging> 

之后,只需右键单击项目,Maven – >更新项目,它应该自动为您在部署程序集中添加Maven依赖项。

用鼠标右键单击项目> Maven>更新Maven项目>确定为我修复它

检查项目的部署程序集属性。 我已经看到了一些mvn eclipse:eclipse生成的Eclipse项目有时会将资源部署到错误的位置。 从我所记得的新部署组件在早期版本的Eclipse 3.6(Helios)中遇到了一些问题。

我只是做了maven – >更新项目为我工作。

你想使用复制依赖插件

看到这个post和文档

如果你看看你的部署,并且看到WEB-INF / lib没有你的Maven依赖关系,那么确保这些Maven依赖关系在你的部署程序集中是至关重要的。

但是要小心Eclipse,即使使用Maven更新也不要刷新所有内容。 如果清理,重build和重新部署,仍然看不到正在填充的lib文件夹,请尝试通过“服务器”>“添加和删除”删除应用程序并将其重新添加到服务器部署。

这为我解开了系统。