maven把依賴包拷貝到lib下


標准web工程在eclipse中利用m2eclipse插件添加依賴管理后,在部署過程中沒有將依賴的jar包自動拷貝到/WEB-INF/lib中。
參考了一些朋友的做法手動執行

[java] view plain copy
  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 plain copy
  1. <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>  


[xhtml] view plain copy
  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

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 plain copy
  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

 

 

http://blog.csdn.net/yirentianran/article/details/6429240


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM