1. 程式人生 > >終於弄明白了Eclipse中Maven和SVN,真不容易!

終於弄明白了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

1

2

3

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。

有些問題發生的很奇妙,按照常規的思路來考量的話,會覺得特別不可思議。所以唯有保持耐心,嘗試不同的方法,才有可能解決問題。