如何使用Maven将依赖项复制到Spring项目的WEB_INF / lib文件夹中?

时间:2010-11-08 07:20:08

标签: eclipse maven-2

我在Eclipse Galileo中有一个Spring MVC项目。 它的依赖性在pom.xml中指定 。 当我键入mvn eclipse:eclipse时,在Eclipse构建路径中将依赖关系指定为作为链接。 但是当我尝试在服务器上运行这个应用程序时(在Eclipse中,运行 - >在服务器上运行),类路径中不存在依赖关系,这就是我得到classDefNotFound错误的原因。 有没有办法解决这个问题?

非常感谢!

5 个答案:

答案 0 :(得分:3)

  

如何使用Maven将依赖项复制到Spring项目的WEB_INF / lib文件夹中?

没有必要这样做。这只是一个可怕的解决方法。解决问题的根本原因。

  

我在Eclipse Galileo中有一个Spring MVC项目。它的依赖项在pom.xml中指定。当我键入mvn eclipse:eclipse时,依赖项被指定为Eclipse构建路径中的链接。

很奇怪,那不是我得到的。你能展示.classpath的内容吗? Maven Eclipse插件生成的典型.classpath如下所示:

<classpath>
  <classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/>
  <classpathentry kind="src" path="src/main/java" including="**/*.java"/>
  <classpathentry kind="output" path="target/classes"/>
  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/>
  ...
  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
</classpath>

我在这里看不到任何“链接”。您的环境中是否定义了M2_REPO

  

但是当我尝试在服务器上运行这个应用程序时(在Eclipse中,运行 - &gt;在服务器上运行),类路径中不存在依赖关系,这就是我得到classDefNotFound错误的原因

我认为别的事情是错的。但是将依赖项复制到WEB-INF/lib当然不是解决问题的正确方法。

答案 1 :(得分:1)

我建议你看看M2Eclipse。它提供了一个带有项目maven依赖项的类路径容器,并且通常可以更好地与Eclipse集成。

M2Eclipse classpath container

其主要特点是:

  • 创建和导入Maven项目
  • 依赖项管理以及与Eclipse类路径的集成
  • 自动依赖关系下载和更新
  • Artifact Javadoc和源代码分辨率
  • 使用Maven Archetypes创建项目
  • 浏览和搜索远程Maven存储库
  • 自动更新依赖关系列表的POM管理
  • 从Maven POM实现项目
  • 从多个SCM存储库中签出Maven项目
  • 将嵌套的多模块Maven项目适配到Eclipse IDE
  • 与Web Tools项目(WTP)集成
  • 与Subclipse和Subversive集成
  • 与Mylyn集成
  • 基于表单的POM编辑器
  • 依赖图的图形显示
  • 依赖树和已解析依赖关系的GUI表示

maven-eclipse-plugin is scheduled to be deprecated and later on retired因此,研究将在不久的将来维持的事情是明智的。

答案 2 :(得分:1)

我在IRAD上的maven项目遇到了类似的问题。右键单击War项目,选择属性。在“Java EE Module Dependencies”下,选中“Maven Dependencies”旁边的复选框。这应该在部署期间将lib文件夹复制到服务器上的目标位置。

我正在使用IRAD,因此不确定这是否特定于IRAD或者是否可用于Eclipse。

答案 3 :(得分:0)

由于您似乎有一个maven项目,您可以使用Eclipse Maven插件(M2Eclipse)并将项目导入为Maven项目

尽管如此,上述步骤也应该起作用。

答案 4 :(得分:0)

您是否将MAVEN_REPO类路径变量添加到Eclipse?如果没有,您可以使用maven插件执行此操作:

mvn -Dworkspace=/path/to/your/workspace eclipse:configure-workspace

有关详细信息,请查看maven-eclipse-plugin的Usage页面!