Maven學習第3期---m2eclipse使用


一、m2eclipse簡介

和Nexus一樣,m2eclipse也是Sonatype出品的一款開源工具,它基於Eclipse Public License-v.10開源許可證發布,用戶可以免費下載並使用,還可以查看其源代碼m2 eclipse的官方站點地址為http://m2eclipse.sonatype.org/

m2ecIipse為Eclipse環境提供了全面豐富的Maven集成 它的主要功能如下:

創建和導人Maven項目

管理依賴並與Eclipse的cIasspath集成

自動下載依賴

自動解析依賴的sources 與javadoc包

使用Maven Archetype創建項目

瀏覽與搜索遠程Maven倉庫

從Maven POM具體化一個項目

從SCM倉庫簽出Maven項目

自動適配嵌套的多模塊Maven項目至Eclispe

集成Web Tools Projects (WTP)

集成Subclipse

集成Mylyn

可視化POM編輯

圖形化依賴分析

二、m2eclispe的簡單使用

2.1 新建Maven項目

m2eclipse中新建一個Maven十分簡單,在菜單欄中依次選擇File→New→Other。這時可以看到下圖所示的向導:

選擇Maven Project之后,向導會提示用戶選擇是否跳過archetype而創建一個最簡單的Maven項目,這個最簡單項目將只包含最基本的Maven項目目錄結構,讀者可以根據自己的需要進行選擇。

如果選擇使用Archetype創建項目,單擊Next按鈕之后,向導會提示用戶選擇Archetype,如下圖所示

如上圖所示,有4個Archetype Catalog可供用戶選擇,包括maven-archetype-plugin內置Intemal本地倉庫Default Localm2eclipse下載到倉庫索引中包含Nexus Indexer,以及所有這3個合並得到的All Catalogs。如果對Archetype Catalog不是很清楚。一般來說,只需要選擇Internal。然后再選擇一個Archetype,如maven-archetype-quiCk-start,最后單擊Next按鈕。

接下來要做的就是輸入項目坐標Group Id、Artifact Id、Version以及包名。這一個步驟與在命令行中使用Archetype創建項目類似,如果Archetype有其他可配置的屬性,用戶也可以在這里一並配置,如下圖所示。

單擊Finish按鈕之后,m2eclipse就會快速地在工作區創建一個Maven項目,這同時也是一個Eclipse項目。

2.2 導入Maven項目

較之於創建新的Maven項目,實際工作中更常見的是導人現有的Maven項目。m2eclipse支持多種導入的方武,其中最常用的是導人本地文件系統的Maven項目以及導入SCM倉庫中的Maven項目

單擊菜單欄中的File,然后選擇Import開始導人項目,如下圖所示:

從上圖中可以看到在Maven類中有4種導人方式,常用的就是第一種第二種,即導入SCM倉庫中的Maven項目和導入本地文件系統的Maven項目。圖中的Install or deploy an artifact to a Maven repository能讓用戶將任意的文件安裝到Maven的本地倉庫。如果該文件沒有對應的POM,則需要為其定義Maven坐標。 圖中的Materialize Maven Projects能讓用戶導人第三方的Maven項目,用戶只需要提供一些關鍵字如nexus-api然后選擇要導人的項目m2eclipse就能基於索引找到其對應的POM信息。如果該POM中包含了SCM信息,m2eclipse就能直接下載該項目的源碼並導人到m2eclipse中。當用到某個第三方類庫,同時想研究其源碼的時候,這一特性就非常有用,你不再需要打開瀏覽器去尋找該項目的信息,簡單地在m2eclipse中操作幾步就能完成第三方項目的導人。當然,這一特性的前提是第三方類庫提供了正確的SCM信息。大多數開源項目在往Maven中央倉庫提交構件的時候都會提供完整的信息,但也有例外,為了避免信息不完整的項目進入Maven中央倉庫,最新的規則已經強制要求提交者提供完備的信息,如SCM、許可證以及源碼包等。這無疑能幫助m2eclipse表現得更好。

2.2.1 導入本地Maven項目

現在詳細介紹一下如何導人本地Maven項目:選擇上圖中的Existing Maven Projects選項,然后在彈出的對話框中選擇本地項目所在的目錄,如下圖所示。m2eclipse能夠自動識別出目錄中所包含的Maven項目,如果發現是多模塊項目,則會列出所有的模塊。用戶可以根據自己的需要選擇要導人的模塊,然后單擊Finish按鈕二m2eclipse會執行導人項目信息、更新下載項目依賴,以及重建工作區等操作,根據實際項目的情況,這個過程可能花費幾十秒到十幾分鍾:

2.2.2從SCM倉庫導入Maven項目

通常我們的項目源代碼都存儲在SCM倉庫中,例如Subversion倉庫,讀者當然可以使用Subversion命令將項目源碼簽出到本地,然后再導入到m2eclipse中,但m2eclipse支持用戶直接從SCM倉庫中導人Maven項目。

要從SCM導人Maven項目,首先需要確保安裝了集成SCM的Eclipse插件,如Subclipse,還需要m2eclipse的附屬組件Maven SCM Integration以及對應的SCM handler,如集成Subclipse的Maven SCM handler for Subclipse。如果這些組件都得以正確安裝,就可以選擇下圖中的Check out Maven Projects fromSCM:

在單擊Next按鈕之后,選擇SCM類型並輸入SCM地址,如下圖所示:

單擊Next按鈕之后,用戶可以選擇項目導入的本地位置,然后單擊Finish按鈕,m2elipse就會在后台使用SCM 工具簽出項目許執行Maven構建。

三、訪問Maven庫

有了m2eclipse,用戶可以直接在Eclipse中瀏覽本地遠程的Maven倉庫,並且能夠基於這些倉庫的索引進行構件搜索Java類搜索。這樣就免去了離開Eclipse訪問本地文件系統或者瀏覽器的麻煩,提高了日常開發的效率。

3.1 Maven倉庫視圖

m2eclipse提供了Maven倉庫視圖,能讓用戶方便地瀏覽本地及遠程倉庫的內容,不過默認情況下該視圖不被開啟。要開啟Maven倉庫視圖,依次選擇Eclipse菜單欄中的Windows→Show View→Other選項,Eclipse會彈出一個對話框讓用戶選擇要打開的視圖,選擇Maven類下的Maven Repositories,如下圖所示:

這時可以在Eclipse窗口下方看到Maven倉庫視圖,這個視圖中包含了4類Maven倉庫,分別為:

本地倉庫

全局倉庫

項目倉庫

自定義庫

如下圖所示:

其中,本地倉庫包含了Maven的本地倉庫以及當前Eclipse工作區的項目全局倉庫默認是Maven中央倉庫,但是如果在settings.xml中設段了鏡像,全局倉庫就會自動變更為鏡像倉庫。最后,如果當前Maven項目的pom. xml中配置了其他倉庫,它們就會被自動加入到項目倉庫這一類中。這些倉庫的信息來源於用戶的settings. xml文件工作區中Maven項目的pom.xml文件

用戶可以以樹形結構快速瀏覽倉庫的內容,雙擊葉子節點,打開構件對應的POM文件,如下圖所示。

大家可能已經猜到,m2eclipse其實不會真正地去存儲所有倉庫的內容,那樣需要消耗大量的磁盤及網絡帶寬。因此與Nexus一樣,m2eclipse使用nexus-indexer索引倉庫內容的信息以全局倉庫central為例,用戶在首次使用m2eclipse的倉庫瀏覽及搜索功能之前,需要構建該倉庫的索引,在如下圖所示的倉庫上右擊。

快捷菜單中的Rebuild Indexm2eclipse重新下載完整的遠程索引,由於當前倉庫是central,索引文件較大,因此重建該索引會消耗比較長的時間。Update Index則讓m2eclipse以增量的方式下載索引文件。如果是本地倉庫Update Index無法使用,而Rebuild Index的效果是重新遍歷本地倉庫的文件建立索引

上圖中的菜單還有幾個選項,Disable Index Detailsm2eclipse關閉該倉庫的索引,從而用戶將無法瀏覽該倉庫的內容,或者對其進行搜索。Minimum Index Enabled表示只對倉庫內容的坐標進行索引,而Enable Full Index不僅索引倉庫內容的坐標,還索引這些文件所包含的Java類信息,從而能夠支持用戶搜索倉庫中的Java類.

3.2 搜索構建和java類

有了倉庫索引之后,用戶就可以通過關鍵字搜索Maven構件了。單擊Eclipse菜單欄中的Navigate,再選擇Open Maven POM選項,就能得到構件搜索框。輸入關鍵字后就能得到一個結果列表,還可以點擊列表項進一步展開以查看版本信息,如下圖所示。雙擊某個具體版本的構件,能讓m2eclipse直接打開對應的POM文件。

如果為倉庫開啟了Enable Full Indexdt選項,也就是說索引中包含Java類型信息,則就可以通過Java類名的關鍵字尋找構件。單擊Eclipse菜單欄中的Navigate,再選擇Open type from maven就能得到類搜索框。輸入關鍵字后,就能得到下圖所示的搜索結果。同樣,用戶可以單擊列表項展開其版本,還可以雙擊具體版本打開其POM。這樣不用離開Eclipse,用戶就能隨時搜索想要使用的類庫以及Java類,m2eclipse僅僅要求用戶提供一些必要的關鍵字,這無疑是非常方便的。

四、管理項目依賴

添加Maven依賴的傳統做法是先搜索得到依賴的坐標,然后配置項目的pom. xml文件,加入dependency元素。當然,在m2eclipse中也可以這樣做,不過m2eclipse提供了更方便的添加依賴的方法,用戶直接根據關鍵字搜索依賴並從結果中選擇即可。此外,m2eclipse還提供了豐富的可視化界面幫助用戶分析項目中的各種依賴以及它們之間的關系。

4.1 添加依賴

m2eclipse中有多種添加依賴的方法,直接編輯pom.xml是一種,不過這里要講的是另外兩種更方便的做法

第一種

首先用戶可以在項目上或者pom. xml上右擊,然后選擇Maven,再選擇Add Depenclency添加依賴,如下圖所示:

在彈出的對話框中,用戶只需要輸入必要的關鍵字,然后選擇要添加的依賴版本,並且設定正確的依賴范圍,單擊OK按鈕之后,依賴就被自動加入到pom.xnil中,如下圖所示,就為項目添加了javax.servlet:servlet-api:2.5這樣一個依賴,並且在圖的下方選擇了provided這樣的一個范圍。

第二種

第二種快速添加依賴的方式是使用m2eclipsePOM編輯器。默認情況下,用戶雙擊項目的pom.xml就能打開POM編輯器,POM編譯器下方有很多選項卡,包括概覽依賴插件報告依賴層次依賴圖Effective POM等。其中,依賴(Dependencies)一項可以用來添加刪除編輯依賴,如下載所示。

注意:如果,雙擊看不到上面的界面。可能是因為,安裝的m2e插件本身就是不全的,里面根本沒有pom editor。所以需要下載pom editor的zip包:

 http://download.csdn.net/detail/honestjiang/8508393

解壓之后,直接放到原來那個m2e的插件包 的plugin下面即可,即m2eclipse\eclipse\plugins\org.eclipse.zest.XXX的兩個zip,重啟之后,右 鍵pom.xml即有pom editor打開方式了。

單擊上圖中上方的Add按鈕,就能得到如下圖所示的添加依賴對話框:

此外,從圖中還可以看到,用戶可以查看依賴的細節並對其進行編輯。添加項目依賴之后,如果m2eclipse沒有自動將依賴更新至項目的構建路徑,用戶可以強制要求m2eclipse更新,方法是在項目或者pom. xml上右擊,選擇Maven,再選擇Update Dependencies或ctrl+S保存。

4.2 分析依賴

介紹了如何使用maven-dependency-plugin分析並優化項目的依賴,Maven用戶可以在命令行以樹狀的形式查看項目的依賴以及它們之間的關系;有了m2eclipse,這種可視化的分析將更為清晰和直觀。

開啟POM編輯器中的依賴層次項(Dependency Hierarchy),就能看到圖下圖所示的依賴層次圖。

上圖中左邊列表顯示了項目的樹形依賴層次,右邊列表則是所有Maven最終解析得到的依賴。默認情況下,兩個列表都會顯示依賴的artifact、versIon以及scope。要查看依賴的groupld,可以單擊列表上方右起第二個按鈕Show Groupld。

有了這樣一個依賴層次圖,用戶就能很清晰地看到所有依賴是如何進入到項目中來的,可能這是個直接依賴,那么在左邊的它就是個頂層節點;可能這是個傳遞性依賴,那么這個樹形層次就能夠告訴用戶傳遞路徑是什么;如果這個依賴是同一Maven項目的另外一個模塊,那么它的圖標將與其他依賴不同,而是一個文件夾的樣子,如果用戶單擊右邊已解析依賴列表中的任意一項,左邊就會自動更新為該依賴的傳遞路徑。

如果,您認為閱讀這篇博客讓您有些收獲,不妨點擊一下右下角的【推薦】。
如果,您希望更容易地發現我的新博客,不妨點擊一下左下角的【關注我】。
如果,您對我的博客所講述的內容有興趣,請繼續關注我的后續博客,我是【Sunddenly】。

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利


免責聲明!

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



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