Eclipse : Web Deployment Assembly & Maven depende

标准web工程在eclipse中利用m2eclipse插件添加依赖管理后,在部署过程中没有将依赖的jar包自动拷贝到/WEB-INF/lib中。
参考了一些朋友的做法手动执行

[java] view plaincopy

  1. mvn dependency:copy-dependencies -DoutputDirectory=src/main/webapp/WEB-INF/lib  -DincludeScope=runtime

命令将jar包拷贝到/WEB-INF/lib目录下。
这种做法固然可以,但是也会带来一些不便。
1、需要手动执行命令。
2、不能时时更新。

以下列出网上查找到的解决方法,m2eclipse plugin方式已验证通过。
通过验证eclipse版本:eclipse-jee-helios-SR2-win32
m2eclipse插件地址:http://m2eclipse.sonatype.org/sites/m2e
标准web工程通过m2eclipse添加依赖管理步骤:
1、“Maven ” –> “Enable dependency Management“

2、Web Deployment Assembly中添加maven dependencies

步骤如下图:

工程 -> 右键 -> preferences

.classpath文件中会有修改

[xhtml] view plaincopy

  1. <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>

[xhtml] view plaincopy

  1. <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
  2. <attributes>
  3. <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
  4. </attributes>
  5. </classpathentry>

(执行“Maven ” –> “Update Project Configuration “未生效,故手动添加。必须deploy时候才会拷贝jar包到lib目录下,而非在更新maven依赖时候拷贝jar包。 )

以下为原文内容:

Eclipse : Web Deployment Assembly & Maven dependencies issue

Published: September 3, 2010 , Updated: September 3, 2010 , Author: mkyong

print

Problem

In Eclipse 3.5 or early version, in order to deployed the Maven dependencies to the correct “/WEB-INF/lib ” folder, you have to configure the dependencies via “Java EE Module Dependencies”, and the updated “.classpath ” file will look like following :

File : “.classpath”, by Java EE Module Dependencies…

[xhtml] view plaincopy

  1. ...  
  2. <classpathentry kind="var" path="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1.jar"   
  3.    sourcepath="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1-sources.jar">  
  4.    <attributes>  
  5.      <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>  
  6.    </attributes>  
  7. </classpathentry>  
  8. ...  

Since Eclipse 3.6, the “Java EE Module Dependencies” is replaced by “Web Deployment Assembly”, but you can do the same via the “Referenced Projects Classpath Entries”, however, it will update the “.classpath ” file as following :

File : “.classpath”, by Web Deployment Assembly…

[xhtml] view plaincopy

  1. ...  
  2. <classpathentry kind="var" path="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1.jar"   
  3.    sourcepath="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1-sources.jar">  
  4.    <attributes>  
  5.      <attribute name="org.eclipse.jst.component.dependency" value="../"/>  
  6.    </attributes>  
  7. </classpathentry>  
  8. ...  

Sadly, the default (value=”../”) makes all the Maven’s dependencies failed to deploy.

Solution

Not a big issue, you still can modify the (value=”../”) to (value=”/WEB-INF/lib”) manually, but it will get override every time you run a Maven build. No worry, there are still have two solutions :

1. WTP Support

Ignore the “Referenced Projects Classpath Entries” settings, instead, make the Maven supports WTP 2.0

[java] view plaincopy

  1. mvn eclipse:eclipse -Dwtpversion=2.0

It will generate a new file named “org.eclipse.wst.common.component “, under “settings ” folder, see a portion of this file :

File : “org.eclipse.wst.common.component”, by WTP

[xhtml] view plaincopy

  1. ...  
  2. <dependent-module archiveName="jsp-api-2.1.jar" deploy-path="/WEB-INF/lib"   
  3.   handle="module:/classpath/var/M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1.jar">  
  4.   <dependency-type>uses</dependency-type>  
  5. </dependent-module>  
  6. ...  

With WTP support, it helps to deploy the Maven dependencies to “/WEB-INF/lib ” folder correctly.

2. m2eclipse plugin

Install the m2eclipse , an Eclipse plugin to integrate Maven into the Eclipse IDE. After the installation, right click on the project folder, select “Maven ” –> “Update Project Configuration “, it will update the “.classpath ” file accordingly, see a snippet

File : “.classpath”, by m2eclipse

[xhtml] view plaincopy

  1. ...  
  2. <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">  
  3.   <attributes>  
  4.     <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>  
  5.   </attributes>  
  6. </classpathentry>  
  7. ...  

It helps to deploy the Maven dependencies correctly as well.

Reference

  1. http://m2eclipse.sonatype.org/
  2. http://www.mkyong.com/maven/maven-dependency-libraries-not-deploy-in-eclipse-ide/
  3. http://www.eclipse.org/forums/index.php?t=msg&goto=542963&
  4. http://www.eclipse.org/forums/index.php?t=msg&goto=543308&
  5. http://tux2323.blogspot.com/2010/06/review-eclipse-helios-rc4.html

Eclipse : Web Deployment Assembly & Maven depende

时间: 2024-10-14 15:11:27

Eclipse : Web Deployment Assembly & Maven depende的相关文章

Eclipse的Deployment Assembly和Project Facets和org.eclipse.wst.common.project.facet.core.xml关系

背景: web项目:spring4+springmvc4+hibernate4+maven3 问题: 启动tomcat后报错:java.lang.ClassNotFoundException: ContextLoaderListener 右键点击项目--选择Properties,找到Deployment Assembly选项,点击add按钮,发现没有Java Build Path Entries选项,也就没有maven依赖包了.很奇怪! 正常应该如下: 解决: 右键点击项目--选择Propert

在eclipse中,用maven创建一个web项目工程

1.在eclipse中用maven创建项目,右键new>>Maven Project 2.点击next继续 3.点击next继续,选择maven-archetype-webapp, 4.点击next继续,填写Group id和Artifact id, Version默认,Package可以不填 5. 然后点击finish,完成web项目的创建: 在创建web项目完成后,可能出现的问题及其解决方法: Q1:项目忽然出现 The superclass "javax.servlet.htt

Eclipse 下载 开源项目 maven依赖丢失和 Deployment Assembly 丢失

周末下载了最新的jeecg的源码来瞅瞅,但是下载后发现,pom文件中定义的依赖都丢失了. 如下图 上网搜索了一下啊,发现需要先给这个项目这个项目 disable maven nature 然后再添加上再给这个项目添加maven支持. 如下图: 然后再查看项目的依赖,如下图 但是发现不能部署tomcat,仔细一看少了 Deployment Assembly 在网上又是一通搜索,发现需要修改 project Facets 的 动态 web module 后来在网上搜索,说可以直接改配置文件,就能出现

如何在eclipse jee中创建Maven project并且转换为Dynamic web项目

一.创建maven工程 在eclipse的菜单栏选择File->New->Other->Maven->Maven Project 下一步后选择Create a simple project(skip archetype selection),如图 下一步后输入Group Id,Archive Id,Packaging后点击Finish,如图 创建成功后的文件目录,如图 二.转换为java的Dynamic Web Project 右键点击Project的名称,选择Properties

使用Eclipse自带的Maven插件创建Web项目时报错:

问题描述: 使用Eclipse自带的Maven插件创建Web项目时报错: Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:RELEASE from any of the configured repositories. Could not resolve artifact org.apache.maven.archetypes:maven-archetype-webapp:pom:REL

在 eclipse中 创建 web 版的 maven 工程以及 进一步了解 pom.xml 中 scope 的相关配置设置问题

1.在 eclipse中 创建 web 版的 maven 工程: a.和 创建 java 版的 maven 工程一样,先选中一个简单的工程(跳过经典模式),后填写坐标(不了解的看先前的博文),在打包方式中选择 war 包,后点击 finish. b.可以看到,在新建 的 javaproject03 的 项目中,只有 webapp目录,而实际的内容并没有.这里我们在每次新建时都要做设置.设置如下: 注:鼠标停在所建的项目上,点击右键进入 properties --> Project Facets

eclipse总结source folder和Deployment Assembly部署

在src下创建多级目录 然后邮件build path-->use as source folder 就可以直接将多级普通文件夹转换成source folder build path下也可以直接new source folder build path 进入后也可以source ---> add source folder 项目 右键 属性 Deployment Assembly 将项目路径和部署路径 一 一 对应 原文地址:https://www.cnblogs.com/bevis-byf/p/

eclipse下tomcat运行maven出现ClassNotFoundException错误

棱镜学院   www.prismcollege.com 专注IT在线 今天部署tomcat maven项目时,出现了错误如下: java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) at org.apac

java build path &amp;&amp; deployment assembly &amp;&amp; 编译路径 &amp;&amp; 发布路径

java build path java源文件,编译后,输出的路径,默认值为: *此时的源码文件夹在 /src deployment assembly 系统发布路径设置,将完成(或未完成)的项目对应的资源,发布到web服务器(如Tomcat)上的制定位置: *请仔细阅读图片中的文字注解. 另外: 1.当我们 保存文件时 eclipse 会自动编译文件,然后编译出的文件自然就在我们设置的 编译输出文件夹之内了. 2.然后我们就将web项目,部署到我们指定的服务器. a.按照deployment a