在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
- 您的依赖关系应该与默认范围(如果
provided
或test
他们将不包括在档案中) - 如果您在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文件夹,请尝试通过“服务器”>“添加和删除”删除应用程序并将其重新添加到服务器部署。
这为我解开了系统。