日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Myeclipse项目加入maven支持

發布時間:2025/3/17 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Myeclipse项目加入maven支持 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目還是之前的項目,現在我要在原有項目中加入maven支持,但是myeclipse只能在建立web project時有選項可以為項目加入maven支持,但我的項目已經生成好久了,所以只能自已動手了。

?

?

?

步驟如下;(做完之后好幾天才寫的,難免有遺漏)

?

注:我的環境為:myeclipse7.5和maven2.2;myeclipse7.0自帶的好像是maven1.*(未查證),所以步驟可能不能,推薦使用maven2

1.修改目錄

??? 先要將目錄結構改為maven項目的目錄結構做法是:

???? A:先將原src重命名為"java",(如果使用svn改完命后要先提交,不然不讓建立src目錄)

???? B:建立"src"目錄,在src下建立"main"目錄,把重命名的"java"目錄拽到"main"下,這時如果"java"變為普通目錄,那么把它改為源碼目錄(右鍵->build path-> use as source folder)

???? C: 把原來的WebRoot目錄重命名為"webapp",把它拽到"main"下

???? D:建立其它所需目錄,src/test/java(源碼目錄)? ; src/test/resources ; src/main/resources? ;target等.

????由于改變了目錄所以現在項目已經無法再用原來的方法部署了,現在做下一部改下目錄的設置讓項目可以用原方法部署

2.將?webapp設置WebRoot目錄

??? 到工作目錄你的項目下的.mymetadata(隱藏)文件中的<attribute name="webrootdir" value="WebRoot" /> 改為

?? <attribute name="webrootdir" value="/src/main/webapp?"?/>

??? 修改項目下的.classpath文件 中的 源碼輸出路徑為: <classpathentry kind="src" output="src/main/webapp/WEB-INF/classes?"?path="src/main/java"/> 修改 主輸出路徑為:<classpathentry kind="output" path="src/main/webapp/WEB-INF/classes"?/>

?????重啟eclipse,現在又可以以原來的方法部署項目了。

3.建立pom.xml文件和對相關框架的依賴

??? 新建一個web project項目并讓為它添加maven支持,然后再這個項目中加入你所使用的框架支持如:hibernate,spring,jsf等所有你需要并myEclipse可以提供的支持(這個過程可能要等一段時間,因為maven會自動到主鏡像站下載所需的jar包和pom文件到本地庫),這時MyEclipse會為你在pom中加入你所需要的依賴關系。把這個pom.xml 文件拷到你的項目根目錄并修改groupId和artifactId為你的項目的名子,現在在為項目加入一個maven的Build配置,讓MyEclipse認為這個項目是一個Maven項目,修改項目下的.project文件 :

buildSpec小節 加入 :

??? ??? <buildCommand>
??? ??? ??? <name>org.maven.ide.eclipse.maven2Builder</name>
??? ??? ??? <arguments>
??? ??? ??? </arguments>
??? ??? </buildCommand>

natures小節中加入

??? ??? <nature>org.maven.ide.eclipse.maven2Nature</nature>

???重啟Eclipse,發現現在項目文件夾上已經有一個M圖標了,說明Eclipse已經認為這是一個Maven項目了

?? 注:為了能使項目還能以原來的方法部署現在暫時不要刪除原來引用jar的的Build path,在最后再刪除它們

4.加入其它jar包的依賴

?? 現在的pom.xml文件已經有了我們所需框架的jap依賴定義了,但是你可能和我一樣有一些其它jar包的依賴要把它加入到pom.xml文件,做法如下:先到maven的庫查詢網站去查找你所需的jar文件(注意版本),如果找到直接把它加入到你的pom.xml文件中,如:

??? ??? <dependency>
??? ??? ??? <groupId>mx4j</groupId>
??? ??? ??? <artifactId>mx4j</artifactId>
??? ??? ??? <version>3.0.1</version>
??? ??? </dependency>

這時maven會自動到maven庫中去下載這個jar和這個jar所依賴的jar?,注意在你的maven更新過程中可能出現存在循環依賴的提示,這是因為你所加入的其它包中已經通過依賴關系加入了這個jar包,而你又手到加入了這個包,所以你只要放心的把你手動加入的依賴包定義刪除就行了。由于Maven會自動加入包的依賴關系,所以很可能會造成包的沖突,遇到最多的應該是hibernate的asm包沖突,這時你可以定義一下要求hibernate不下載指定的依賴jar,像這樣:

??? ??? <dependency>
??? ??? ??? <groupId>org.hibernate</groupId>
??? ??? ??? <artifactId>hibernate</artifactId>
??? ??? ??? <version>3.2.5.ga</version>
??? ??? ??? <exclusions>
??? ??? ??? ??? <exclusion>
??? ??? ??? ??? ??? <groupId>asm</groupId>
??? ??? ??? ??? ??? <artifactId>asm</artifactId>
??? ??? ??? ??? </exclusion>
??? ??? ??? ??? <exclusion>
??? ??? ??? ??? ??? <groupId>asm</groupId>
??? ??? ??? ??? ??? <artifactId>asm-attrs</artifactId>
??? ??? ??? ??? </exclusion>
??? ??? ??? ??? <exclusion>
??? ??? ??? ??? ??? <groupId>cglib</groupId>
??? ??? ??? ??? ??? <artifactId>cglib</artifactId>
??? ??? ??? ??? </exclusion>
??? ??? ??? </exclusions>
??? ??? </dependency>

?

另外我還遇到了xfire的spring1.2和我使用的spring2.0沖突

??? ??? <dependency>
??? ??? ??? <groupId>org.codehaus.xfire</groupId>
??? ??? ??? <artifactId>xfire-spring</artifactId>
??? ??? ??? <version>1.2.6</version>
??? ??? ??? <exclusions>
??? ??? ??? ??? <exclusion>
??? ??? ??? ??? ??? <groupId>org.springframework</groupId>
??? ??? ??? ??? ??? <artifactId>spring</artifactId>
??? ??? ??? ??? </exclusion>
??? ??? ??? ??? <exclusion>
??? ??? ??? ??? ??? <groupId>org.springframework</groupId>
??? ??? ??? ??? ??? <artifactId>spring-mock</artifactId>
??? ??? ??? ??? </exclusion>
??? ??? ??? </exclusions>
??? ??? </dependency>

?

現在已經為項目加入了maven遠程庫中已有的jar支持了,但是有可能像我一樣還需要一些在maven遠程庫中不存在的jar,像這樣的問題有兩個解決辦法一種是在公司內部自已架一個maven庫,這種做法很費力,但如果你的公司很大,并且有很多maven項目的話,用這種方法就比較實用和方便的,我用的是第二種方法,直接把所需的jar加入到本地庫上,并在pom中引用,方法如下:

A:你要先下載一個maven裝到你的機器中(不知道怎樣直接使用MyEclipse的maven),裝好后在命令行運行mvn -v? 如果正確反回則安裝成功(安裝很簡單,解壓后設下環境變量就行了,一個是M2_HOME,并把你的%M2_HOME%/bin加入到path中,另外確保你有JAVA_HOME的環境變量)

B:運行mvn命令將jar加入到本地庫,這是我加入一個shark包的命令如下:

mvn install:install-file -Dfile=sharkcaching-lru.jar -DgroupId=com.dgsoft.extend -DartifactId=sharkcaching-lru -Dversion=2.2.1 -Dpackaging=jar

注意修改為你的。參數依次為:jar文件名,組織名,定義名,版本,類型。

C:把你加入的jar定義到pom.xml,針對上面的有如下定義:

??? ??? <dependency>
??? ??? ??? <groupId>com.dgsoft.extend</groupId>
??? ??? ??? <artifactId>sharkcaching-lru</artifactId>
??? ??? ??? <version>2.2.1</version>
??? ??? </dependency>

D:如果你也和我一樣有很多這樣的包,那么和以寫一個.bat文件(我在linux下是.sh),方便以后加入,另外我還用DELPHI寫了一個自動查找文件夾下的*.jar文件并自動生成安裝jar到本地庫的bat(或sh)文件和pom.xml文件的小程序,如果有需要可以給我留言,我可以傳上來。

現在萬事俱備,只欠東風了,下面做最后一步

5.修改項目的包引用為pom.xml所設置的依賴。

現在我們可以把原來項目的包引用改成使用maven的依賴庫了,做法很簡單,修改你項目的.classpath配置文件,把原來的包引用全部刪除,并加入maven的依賴引用,我的.classpath文件最后是這樣的,發出來為大家做參考

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
??? <classpathentry kind="src" output="src/main/webapp/WEB-INF/classes" path="src/main/java"/>
??? <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
??? <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
??? <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>?
????<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>?
??? <classpathentry kind="output" path="src/main/webapp/WEB-INF/classes"/>
</classpath>

?

因為我使用的是javaee5項目,所以黑色加粗部分的配置你的可能和我的不一樣

重啟Eclipse ,在項目上右鍵->properties->java build path->order and Export 中的 Maven Dependencies中的勾打上。

現在項目上即可以用原來的方式部署,調試,也可以使用maven的構建、測試等Maven功能了。

?

?

最后說下我在過程中遇到的問題,你可能遇不到,也可能遇到:

1.Maven依賴包沖突,前面說過了。

2.修改pom.xml的依賴包后,eclipse對maven包的引用并不刷新,這可能是Myeclipse7.5的一個bug, 我在試用8.5時好像就沒這個問題了,解決方法是在修改了pom.xml的依賴后,在項目上右鍵-> Maven4MyEclipse->運行一下Enable Nested Modules或Disable Nested Modules就會刷新MyEclipse的Maven Dependencies引用了。

3.xfire的jaxb-api的jar包和jdk1.6的rt.jar沖突,這個問題很怪,雖然Eclipse提示代碼錯誤,但是我把項目部署到jdk1.6的服務器上,這部分功能還是好使的。但是eclipse提示錯誤看起來還是很不爽的。要解決這個問題你需要一個1.5的jdk,但是我在.classpath中已經配置了使用1.5的jdk了,但是eclipse還使用1.6的jdk呢,因為你的eclipse并不知道jdk1.5的存在,只要在你的eclipse設置的jres中查找到1.5的jdk后項目就會自動使用1.5的jdk引用做為build path了(注:不用將jdk1.5設為默認jdk)。

4.javaee相關包不存在或沖突:

不存在的原因是你的pom.xm中的依賴設置中使用了provided定義生存周期,這個設置是認為在環境中已經存在這個包了所以就不再部署了,只要改一下生存周期就行了,沖突也是一樣的(一般是openejb的javaee-api和tomcat的javaeeapi沖突),只要加上這個關鍵字就行了。我的javaee部分配置最后如下:

??? ??? <!-- java EE 5 -->
??? ??? <dependency>
??? ??? ??? <groupId>org.apache.openejb</groupId>
??? ??? ??? <artifactId>javaee-api</artifactId>
??? ??? ??? <version>5.0-1</version>
??? ??? ??? <scope>provided</scope>
??? ??? </dependency>
??? ??? <dependency>
??? ??? ??? <groupId>javax.faces</groupId>
??? ??? ??? <artifactId>jsf-impl</artifactId>
??? ??? ??? <version>1.2_04</version>
??? ??? </dependency>
??? ??? <dependency>
??? ??? ??? <groupId>javax.faces</groupId>
??? ??? ??? <artifactId>jsf-api</artifactId>
??? ??? ??? <version>1.2_04</version>
??? ??? </dependency>
??? ??? <dependency>
??? ??? ??? <groupId>javax.servlet</groupId>
??? ??? ??? <artifactId>jstl</artifactId>
??? ??? ??? <version>1.2</version>
??? ??? </dependency>
??? ??? <dependency>
??? ??? ??? <groupId>javax.servlet.jsp</groupId>
??? ??? ??? <artifactId>jsp-api</artifactId>
??? ??? ??? <version>2.1</version>
??? ??? ??? <scope>provided</scope>
??? ??? </dependency>

?

5.其它問題,主要是包的依賴和沖突等問題比較多,描述起來不太容易,有些我也記不太清楚了,而且和我的項目有關別人遇到的機會不大就不在此描述了。

?

做此操作遇到最多問題的地方就是依賴jar包的問題,所以在最好將最后一步操作(移除舊引用)盡可能延后,這樣可以方便新舊jar 包的對比。

新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的Myeclipse项目加入maven支持的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。