繁体   English   中英

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

[英]Maven dependencies not visible in WEB-INF/lib

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

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

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

  • 您应该调用mvn package (或右键单击 > maven > package)并获取一个 war 文件 - <packaging> (在 pom 中)必须是war
  • 您的依赖项应具有默认范围(如果providedtest它们将不会包含在存档中)
  • 如果您在 eclipse 中的服务器上将项目作为动态 Web 项目运行,那么您应该打开项目属性(右键单击 > 属性)并选择“部署程序集”。 单击“添加”,选择“构建路径条目”,然后选择“maven 依赖项”。 这将指示 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 -> 更新项目对我有用。

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

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

这为我疏通了系统。

右键单击项目 -> 部署程序集:查看是否有 Maven 依赖项和所有其他依赖项。 如果没有,右键单击项目 -> Maven -> 启用工作区解析

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

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

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

你想使用复制依赖插件

看到这篇文章和文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM