在最前面聲明,本文不涉及任何原理,只是對使用方法和期間遇到的問題如何解決。主要是隨着年紀原來越大,越覺得好記星不如爛筆頭的深意,同時如果能夠幫助誰,那就最好不過了。
前兩天自己做一個項目,然后好心朋友要幫忙,但我把項目放到Git上以后出現了點問題,工程文件.project沒有上傳,依賴的jar文件沒有上傳,當他從Git上Down下來以后就不太好處理,然后果斷將項目改為Maven項目。這就是本文的起源。
首先要在Eclipse中安裝插件:在Help-->install new software,輸入下面地址http://download.eclipse.org/technology/m2e/releases,出現如下頁面:
然后就像安裝其他插件那樣一路下一步就OK了。安裝完成之后,我們來看一下是否成功,在Eclipse中,Windows->Preferences,如果出現下面的畫面,那么恭喜你完成了第一步:
值得注意的是Embedded內置的默認maven版本是我們即將要修改的,應為這個版本有點老了,這直接導致的后果就是在添加dependences的時候,maven的庫不是最新的。
其次去maven的官網下載最新版的maven,此時的最新版本為3.2.1,下載地址如下:http://mirrors.cnnic.cn/apache/maven/maven-3/3.2.1/binaries/apache-maven-3.2.1-bin.zip。解壓到本地目錄,比如我的環境中,在本地目錄F:\apache-maven-3.2.1中,在下面配置一下F:\apache-maven-3.2.1\conf目錄中的settings.xml文件,更改一下如下配置:
<!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ${user.home}/.m2/repository --> <localRepository>F:/m2/repository</localRepository>
當然在本地磁盤F:下創建文件夾m2,然后將剛才配置好的settings.xml文件拷貝到F:/m2目錄下。OK,此處有個問題,可能有人說需不需要設置maven的環境變量,可以設置,但是如果只是使用Eclipse的maven的插件而不需要使用命令行,就不用了。反正我沒有設置。下面我們在Eclipse中設置maven到我們剛下載的版本。
然后設置用戶settings,如下圖:
然后保存。OK。這樣我設置完了。我們創建一個Maven項目試試手吧。
在創建向導中多了maven的相關選項:
選擇一個web程序:
然后給取名字就好了:
小手輕輕點一下Finish,OK,一個maven程序就算創建完成了。下面觀察一下這個項目,在項目上右擊->properties->Project Facets看下面的內容:
默認的jre是1.5版本,Dynamic Web Module版本為2.3,當然我這種好大喜功的人當然要改成最新版本,好吧看我的操作:
我修改了jre的版本和web module的版本,但是web module的版本提示出錯了,怎么辦,在所創建項目的根目錄有個文件夾.settings,下面有個org.eclipse.wst.common.project.facet.core.xml,文件,打開以后發現內容如下:
<?xml version="1.0" encoding="UTF-8"?> <faceted-project> <fixed facet="wst.jsdt.web"/> <installed facet="jst.web" version="2.3"/> <installed facet="wst.jsdt.web" version="1.0"/> <installed facet="java" version="1.5"/> </faceted-project>
對jst.web的值做一下修改:
<?xml version="1.0" encoding="UTF-8"?> <faceted-project> <fixed facet="wst.jsdt.web"/> <installed facet="jst.web" version="3.0"/> <installed facet="wst.jsdt.web" version="1.0"/> <installed facet="java" version="1.5"/> </faceted-project>
保存以后,打開項目,右鍵項目名稱,然后在彈出的菜單中選擇Maven->Update Project,
然后在彈出的窗口中選擇本項目:
然后點擊OK,你會發現程序出錯了:
然后右鍵項目,在項目上右擊->properties->Project Facets做出如下修改:
特么的我那會設置的jre的版本已經變為1.5了,好吧,再次設置為1.7,保存。此時出現一個新的問題:
Description Resource Path Location Type
Java compiler level does not match the version of the installed Java project facet. test-001 Unknown Faceted Project Problem (Java Version Mismatch)
解決辦法,郵件項目,選擇屬性,設置java Compiler的jdk版本,
原來是1.5版本,點擊OK之后,錯誤消失。這里面要注意的是,每次你Upload Project的時候,這個設置都會恢復成最開始的默認值,是很煩人,這個問題有兩個解決辦法,一個是這樣在pom.xml文件中添加如下內容:
<build> <finalName>test-001</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build>
但是這樣的話只能對這個項目起作用,最根本上還是要從maven本身的配置入手,如何在創建項目的時候就指定默認的jdk呢?
這樣,在maven的安裝目錄下面的conf/settings.xml文件夾中添加下面一段內容:
<profiles> <profile> <id>jdk-1.7</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.7</jdk> </activation> <properties> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion> </properties> </profile> </profiles>
如果此時Eclipse正在運行,那么重啟一下Eclipse,以后再創建的項目默認的jdk選項均為1.7。就不用每次都配置了。
最后一個很奇怪的問題,也是困擾我很長時間的問題,就是org.eclipse.wst.common.project.facet.core.xml文件中的內容為:
<?xml version="1.0" encoding="UTF-8"?> <faceted-project> <fixed facet="wst.jsdt.web"/> <installed facet="java" version="1.7"/> <installed facet="jst.web" version="3.0"/> <installed facet="wst.jsdt.web" version="1.0"/> </faceted-project>
而程序一直報這個異常:
但是項目的屬性中看,程序沒有問題:
我嘗試了很多方法,在網上也搜了很多,但是都不能解決我的問題,仔細看了一下工程,在web.xml中的標記使這樣:
http://java.sun.com/dtd/web-app_2_3.dtd
果斷改成
http://java.sun.com/dtd/web-app_3_0.dtd
OK,問題解決。
文章中我處理問題的方式,符合我的環境和情景,如果誰和我一樣,給你一點幫助我感覺很欣慰。