Maven依赖项在WEB-INF / lib中不可见

时间:2011-05-21 18:06:23

标签: java eclipse tomcat maven web-inf

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

有人here似乎以正确的方式解决了这个问题,但我猜他忘了提到解决方案::(

9 个答案:

答案 0 :(得分:167)

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

  • 您应该调用mvn package(或右键单击&gt; maven&gt;包)并获取war文件 - <packaging>(在pom中)必须为war
  • 您的依赖项应该是默认范围(如果它们是providedtest它们将不会包含在存档中)
  • 如果您在eclipse中的服务器上运行项目作为动态Web项目,则应打开项目属性(右键单击&gt;属性)并选择“Deployment Assembly”。单击“添加”,选择“构建路径条目”,然后选择“maven依赖项”。这将指示WTP将maven依赖项发送到服务器目录。

答案 1 :(得分:12)

首先安装 Eclipse WTP的Maven Integration (帮助 - &gt; Eclipse Marketplace)

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

    <packaging>war</packaging>

之后右键单击项目,Maven - &gt;更新项目,它应该在部署程序集中为您自动添加Maven依赖项。

答案 2 :(得分:5)

右键单击项目&gt; Maven&gt;更新Maven项目&gt;好的,为我修好了

答案 3 :(得分:4)

检查项目的部署程序集属性。我看到一些mvn eclipse:eclipse生成的Eclipse项目有时会将资产部署到错误的位置。据我所知,新的部署程序集与早期版本的Eclipse 3.6(Helios)存在一些问题。

答案 4 :(得分:3)

我刚做了maven - &gt;更新项目为我工作。

答案 5 :(得分:0)

您想使用copy-dependencies插件

请参阅this帖子和docs

答案 6 :(得分:0)

如果您查看部署并发现WEB-Inf / lib没有Maven依赖项,那么确保这些Maven依赖项在您的部署程序集中是至关重要的,如所选答案中所述。

但是要注意Eclipse,即使使用Maven更新也不要刷新所有内容。如果清理,重建和重新部署,但仍未看到正在填充的lib文件夹,请尝试通过服务器&gt;添加和删除删除并重新将应用程序添加到服务器部署。

这为我解开了系统。

答案 7 :(得分:0)

右键单击项目 - &gt;部署大会: 看看你是否有Maven依赖关系以及其他所有人。 如果不, 右键单击项目 - &gt; Maven - &gt;启用工作区解析

(也许然后是Maven - &gt;更新项目,但是再看看“部署程序集”,看看你有什么。) 这为我解决了(终于!)

答案 8 :(得分:0)

在Eclipse上,选择您的Web项目->右键单击->属性->部署程序集->添加-> Java构建路径条目-> Maven依赖项

通过此步骤,完全发布后,maven库将包含在WEB-INF / lib中。