終於弄明白了Eclipse中Maven和SVN,真不容易!
昨天折騰了一天,從早上9點到半夜1點,總算是折騰明白了Eclipse中安裝Maven的方法,其實就是什麼也不做——因為Oxygen版本中已經集成了Maven外掛。並且,匯入Maven專案也並不像我上一篇文章Eclipse匯入Maven專案,實在算得上是歷經千辛萬苦說得那麼麻煩。
今天早上,我重新理了一遍思路,對前前後後的過程進行了反思和總結。發現網上提供的方法早已經過時了或者不中用,比如說要下載【apache-maven-3.5.0】,比如說要把Maven配置檔案settings.xml中預設的映象地址改為阿里雲等等,這些方法都會對Maven專案的執行造成執行不了的影響。
初學Java的時候,老師教我要把Java的先安裝地址配置到環境變數中,我學會了,並且照著這個方法一而再再而三的重複。換了新的公司換了新的電腦,就這樣照葫蘆畫瓢,我早已習慣了這樣的思維定式。然後,當我需要在Eclipse中匯入Maven專案的時候,我起先想到的就是下載【apache-maven-3.5.0】,然後把它加入到環境變數中,然後再Eclipse的配置項中載入前面的Maven,我不知道Eclipse已經幫我做了這個事情。
一、Eclipse和Maven
Oxygen版本Eclipse中的Maven配置如上圖所示。
如果你的Eclipse中已經安裝了SVN,那麼請繼續往下看,如果沒有的話,請看先看第二節【Eclipse和SVN】章節內容。
接下來,我們看如何匯入Maven專案。
第一步,通過TortoiseSVN 將Maven專案匯入到本地。
第二步,將Maven專案匯入到Eclipse。
有一個錯誤,不要緊,我們看到Maven專案的基本格調已經有了,此時,並不需要對Maven專案再轉成web專案了,上一篇中介紹的【第三步,將專案轉換為web專案。】是多餘的。
第三步,修正maven倉庫。
這一步並不是必須的,因為在家裡的Mac上同樣的預設Maven可以下載到所有需要lib,但是在公司的電腦上就出現了lib找不到的錯誤。
此時需要修正Maven配置檔案的預設settings.xml。
從apache-maven-3.5.0的資料夾下複製一份新的maven配置檔案到預設的路徑下。
然後追加阿里雲的mirror映象。
<mirror>
<id>aliyun</id>
<name>aliyun Maven</name>
<mirrorOf>*</mirrorOf >
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
開啟Maven的view檢視是否成功。
再次更新Maven。
更新完後,發現還有一個錯誤。
網上找了很多方式都沒用,只好手動下載該jar包了。
第四步,手動下載jar包。
看看pom.xml中bootstrap的版本如下:
<dependency>
<groupId>org.primefaces.themes</groupId>
<artifactId>bootstrap</artifactId>
<version>1.0.10</version>
</dependency>
將下載的jar包新增到本地資源庫中。
重新更新後,發現錯誤消失了。
但是,高興早了。這專案匯出來竟然不是個web專案,明明是個web專案呢?不能執行,擦擦擦,真是受夠了。
第五步,沒辦法的辦法。
重新下載一個低版本的eclipse吧,這次選擇的是【mars】版本,試試怎麼樣?
安裝SVN,再重複【1】的步驟,竟然成功了!
二、Eclipse和SVN
新鮮出爐的eclipse的【Team】一欄中是沒有SVN選項的。
這需要們手動安裝Eclipse的SVN外掛。
可選方案有兩種,【 Eclipse Subversive】和【subclipse】。前者是Eclipse提供的SVN外掛,後者是一個Eclipse外掛Subclipse團隊提供的Apache Subversion。兩者的區別就在於出發點不一樣,【 Eclipse Subversive】是站在Eclipse的角度為SVN做外掛,而【subclipse】是站在SVN的角度為Eclipse做外掛。
兩者孰輕孰重,難以有定論。
為了做差別對別,這一次,我選擇【 Eclipse Subversive】,安裝方式有兩種,見下圖。
我選擇拖拽,這功能感覺不錯!
全選繼續。
同意條款後,點選【Finish】。
完成後重啟。
開啟eclipse的配置項,可以看到【Team】欄中有了SVN,點選後彈出安裝SVN的聯結器,有SVN Kit和javaHL,全選後繼續。
擦,竟然沒有然後了,看來這一步有bug。為了寫完這篇部落格,我是點啊點,重啟啊重啟,足足嘗試有100次,竟然還是安裝過程還是一閃而過。怎麼辦?
點到201次的時候,終於可以安裝一個SVN kit了。
所以,各位,我強烈的,特別強烈的奉勸大家還是用【subclipse】吧!
再次重啟,可以看到有聯結器【SVN kit】了,可惜卻安裝不了JavaHL了,本來還想做【SVN kit】和【JavaHL】的區別了,可惜事與願違。
另外,原來用【subclipse】匯入的專案也沒有SVN資訊了,真是得不償失啊。一看這樣的結果,我決定重新再開一個eclipse,用 【subclipse】 !
用subclipse方式安裝的SVN外掛的聯結器有兩種選擇【SVN kit】和【JavaHL】,兩者也有差別。
SVNKit 是 Subversion 的純 Java 連線庫版本,整個連線底層都是由 Java 實現的,不需要額外的支援。而 JavaHL 則使用的是 Subversion 原生的連線庫,加上了 Java 呼叫庫。這兩種連線庫給人表徵的感覺應該是 JavaHL 在連線穩定性和速度上應該佔優,而 SVNKit 則應該更省事,適用性更廣。
不過,據我的實際使用情況來看, 使用JavaHL 的時候,eclipse經常彈出Subversion Native Library Not Available。
有些問題發生的很奇妙,按照常規的思路來考量的話,會覺得特別不可思議。所以唯有保持耐心,嘗試不同的方法,才有可能解決問題。