安装maven到Eclipse
http://blog.csdn.net/athena5555/article/details/3115874
14.1.?簡介
Eclipse IDE是目前Java開發人群中使用得最廣泛的IDE。Eclipse有一大堆的插件(請看http://www.eclipseplugincentral.com/),無數的組織在它之上開發他們自己的軟件。顯然,Eclipse無處不在。m2Eclipse項目在EclipseIDE中提供了對Maven的支持,本章,我們將會研究它提供的特性,以幫助你在EclipseIDE中使用Maven。
14.2.?m2eclipse
m2eclipse插件(http://m2eclipse.codehaus.org/)為Eclipse提供了Maven的集成。m2Eclipse同時也以掛鉤的方式連接了Subclipse插件(http://subclipse.tigris.org/)和Mylyn插件(http://www.eclipse.org/mylyn/)的特性。Subclipse插件為m2eclipse提供了與Subversion倉庫交互的能力,Mylyn插件為m2eclipse提供了與任務集中接口交互的能力,該接口能跟蹤開發過程的上下文。m2clipse提供的一些特性包括:
-
創建和引入Maven項目
-
依賴管理和與Eclipse classpath的集成
-
自動下載和更新依賴
-
構件的Javadoc及源碼解析
-
使用Maven Archetypes創建項目
-
瀏覽,搜索遠程Maven倉庫
-
通過自動更新依賴列表管理POM
-
從Maven POM具體化一個項目
-
從多個SCM倉庫簽出一個Maven項目
-
適配嵌套的多模塊Maven項目至Eclipse IDE
-
與 Web Tools Project (WTP)集成
-
與 AspectJ Development Tools(AJDT) 集成
-
與 Subclipse 集成
-
與 Mylyn 集成
-
基于表單的 POM 編輯器
-
依賴圖的圖形化顯示
-
依賴樹和已解析依賴的 GUI 展現
在上述列表以外m2eclipse還有很多其它的特性,本章介紹一些更令人印象深刻的特性。讓我們從安裝e2eclipse插件開始。
14.3.?安裝 m2eclipse 插件
要安裝m2Eclipse插件,你需要符合一些先決條件。你需要運行Eclipse 3.2或更高版本,JDK 1.4或更高版本,你需要確認Eclipse是在JDK上運行而不是JRE。在你有了Eclipse和兼容的JDK之后,你需要安裝兩個Eclipse插件:Subclipse和Mylyn。
14.3.1.?安裝前提條件
你可以在安裝m2eclipse的時候安裝這些前提條件的軟件,只要為每個前提條件軟件添加一個遠程更新站點至Eclipse。要安裝這些先決條件軟件,找到Help → →。選擇這個菜單項會載入Install/Update對話框。選擇“Search for new features to install”選項然后點擊Next。你將會看到一個“Update sites to visit”的列表。點擊New Remote Site...,然后為每一個新的前提條件添加一個新的更新站點。為每個插件添加新的更新站點然后確認新站點被選擇了。在你點擊Finish之后,Eclipse會讓你選擇插件組件以安裝。選擇你想要安裝的組件,Eclipse會下載,安裝及配置你的插件。
需要注意的是如果你正在使用Eclipse最新的版本Eclipse 3.4(Ganymede),安裝插件的過程可能會有點不一樣。在Ganymede中,你需要選擇 →,它會載入"Software Updates and Add-ons"對話框。在這個對話框中,選擇“Available Software”面板然后點擊Add Site...,它會載入"Add Site" 對話框。輸入更新站點的URL然后點擊OK。在"Software Updates and Add-ons"對話框中會出現更新站點上可用的插件。你可以選擇你想要安裝的模塊然后點擊Install...按鈕。Eclilpse會解析所選插件的所有依賴,然后要求你同意插件的許可證。在Eclipse安裝了新的插件之后,它會征求你的允許以重啟。
14.3.1.1.?安裝 Subclipse
要安裝Subclipse,使用下面的Eclipse插件更新站點。
-
Subclipse 1.2: http://subclipse.tigris.org/update_1.2.x
想要了解其它版本的Subclipse,以及關于Subclipse插件更多的信息,請訪問Subclipse項目的web站點:http://subclipse.tigris.org/。
14.3.1.2.?安裝 Mylyn
要安裝集成了JIRA支持的Mylyn,添加Mylyn Extras的Eclipse更新URL,如果你的組織使用Atlassian's JIRA來跟蹤問題,你會需要這么做。使用下面的更新站點來安裝Mylyn:
-
Mylyn (Eclipse 3.3): http://download.eclipse.org/tools/mylyn/update/e3.3
-
Mylyn (Eclipse 3.4): http://download.eclipse.org/tools/mylyn/update/e3.4
-
Mylyn Extras (JIRA 支持): http://download.eclipse.org/tools/mylyn/update/extras
想了解關于Mylyn項目的更多信息,訪問Mylyn項目的web站點:http://www.eclipse.org/mylyn/。
14.3.1.3.?安裝 AspectJ Tools Platform (AJDT)
如果你正在安裝m2eclipse的0.9.4版本,你可能同時也想要安裝Web Tools Platform (WTP) 和 AspectJ Development Tools (AJDT)。使用如下的eclipse更新URL以安裝AJDT。
-
AJDT (Eclipse 3.3): http://download.eclipse.org/tools/ajdt/33/update
-
AJDT (Eclipse 3.4): http://download.eclipse.org/tools/ajdt/34/dev/update
想要了解更多的關于AJDT項目的信息,請訪問AJDT項目的web站點http://www.eclipse.org/ajdt/。
14.3.1.4.?安裝 Web Tools Platform (WTP)
要安裝Web Tools Platform (WTP)。使用如下的eclipse更新URL,或者直接在Discovery站點中尋找Web Tool Project,該站點應該已經在你的Eclipse遠程更新站點列表中了。
-
WTP: http://download.eclipse.org/webtools/updates/
關于更多的Web Tools Platform的信息,請訪問Web Tools Platform項目的web站點http://www.eclipse.org/webtools/。
14.3.2.?安裝 m2eclipse
一旦你已經安裝好這些先決條件,你從如下的Eclipse更新URL安裝m2eclipse插件:
-
m2eclipse 插件: http://m2eclipse.sonatype.org/update/
如果你想要安裝最新的該插件的快照開發版本,你應該使用如下的開發更新URL而非之前的URL。
-
m2eclipse 插件 (開發快照): http://m2eclipse.sonatype.org/update-dev/
要安裝m2eclipse,只需要添加一個正確的更新站點。至Help → → ,選擇這個菜單項后會載入Install/Update對話框。選擇"Search for new features to install"選項然后點擊Next。你將會看到一個"Update sites to visit"列表。點擊New Remote Site...,然后添加m2eclipse的更新站點。確認這個新添加的站點被選中了。在你點擊Finish之后,Eclipse會要求你選擇要安裝的組件。你選好之后Eclipse會自動下載,安裝,和配置m2eclipse。
如果你已經成功安裝了這個插件,當你打開Window → 的時候,你應該能夠在一個選項列表中看到一個Maven選項。
14.4.?開啟 Maven 控制臺
在我們開始查看m2eclipse的特征之前,首先讓我們開啟Maven的控制臺。通過訪問 → →來打開控制臺視圖。然后點擊控制臺視圖右手邊的一個小箭頭,然后選擇Maven控制臺,如下顯示:
Figure?14.1.?在Eclipse中開啟Maven控制臺
Maven控制臺顯示那些當在命令行運行Maven時出現在控制臺的Maven輸出。能看到Maven正在干什么,以及根據調試輸出來診斷問題,都是很實用的。
14.5.?創建一個 Maven 項目
在Maven中,我們使用archetype來創建項目。在Eclipse中,我們通過新建項目向導來創建項目。Eclipse中的新建項目向導為創建新項目提供了大量的模板。m2eclipse插件為這個向導增加如下的功能:
-
從SCM倉庫簽出一個Maven項目
-
使用Maven archetype創建一個Maven項目
-
創建一個Maven POM 文件
如 Figure?14.2, “使用m2eclipse向導來創建一個新項目” 所示,這三個選項對使用Maven的開發人員來說都很重要。讓我們逐個看一下。
Figure?14.2.?使用m2eclipse向導來創建一個新項目
14.5.1.?從 SCM 簽出一個 Maven 項目
m2eclipse提供了直接從SCM倉庫簽出項目的能力。簡單的輸入項目的SCM信息,它就會為你簽出項目至你所選擇的位置,如Figure?14.3, “從Subversion簽出一個新的項目”:
Figure?14.3.?從Subversion簽出一個新的項目
該對話框中還有其它的選項用來瀏覽Subversion倉庫的修訂版以指定某個特定的修訂版,或者直接手工輸入修訂版本號。這些特性重用了Subclipse插件的一些特性以和Subversion倉庫相互。除了Subversion,m2eclipse插件也支持下面的SCM提供者:
-
Bazaar
-
Clearcase
-
CVS
-
git
-
hg
-
Perforce
-
Starteam
-
Subversion
-
Synergy
-
Visual SourceSafe
14.5.2.?用Maven Archetype創建一個Maven項目
m2eclipse提供了使用Maven Archetype創建一個Maven項目的能力。伴隨著m2eclipse有許多可用的Maven Archetype,如Figure?14.4, “使用Maven Archetype創建一個Maven項目”:
Figure?14.4.?使用Maven Archetype創建一個Maven項目
Figure?14.4, “使用Maven Archetype創建一個Maven項目”中的archetype列表是由一個叫Nexus索引器生成的。Nexus是一個倉庫管理器,將會在Chapter?16,倉庫管理器介紹。Nexus索引器是一個包含了整個Maven倉庫索引的文件,m2eclipse使用它來羅列出所有Maven倉庫中可用的archetype。到本章更新為止,m2eclipse大概在這個對話框中有90個archetype。其中比較突出的有:
-
標準的 Maven Archetypes 以創建
-
Maven插件
-
簡單Web應用
-
簡單項目
-
新的Maven Archetypes
-
-
Databinder Archetype (數據驅動的 Wicket 應用程序) 位于net.databinder
-
Apache Cocoon Archetype 位于org.apache.cocoon
-
Apache Directory Server Archetype 位于org.apache.directory.server
-
Apache Geronimo Archetype 位于org.apache.geronimo.buildsupport
-
Apache MyFaces Archetype 位于org.apache.myfaces.buildtools
-
Apache Tapestry Archetype 位于org.apache.tapestry
-
Apache Wicket Archetype 位于org.apache.wicket
-
AppFuse Archetype 位于org.appfuse.archetypes
-
Codehaus Cargo Archetype 位于org.codehaus.cargo
-
Codehaus Castor Archetype 位于org.codehaus.castor
-
Groovy-based Maven Plugin Archetype (不推薦使用)[3] 位于 org.codehaus.mojo.groovy
-
Jini Archetype
-
Mule Archetype 位于org.mule.tools
-
Objectweb Fractal Archetype 位于org.objectweb.fractal
-
Objectweb Petals Archetype 位于org.objectweb.petals
-
ops4j Archetype 位于 org.ops4j
-
Parancoe Archetype 位于org.parancoe
-
slf4j Archetype 位于 org.slf4j
-
SpringframeworkOSGI 和 Web Services Archetype 位于org.springframework
-
Trails Framework Archetype 位于org.trailsframework
[3]這些只是由Nexus索引器目錄羅列的archetype,如果你切換目錄你會看到其它的archetype。雖然你看到的結果會有變化,但是以下額外的archetype能在Internal目錄中得到:
-
Atlassian Confluence 插件 Archetype 位于com.atlassian.maven.archetypes
-
Apache Struts Archetype 位于org.apache.struts
-
Apache Shale Archetype 位于 org.apache.shale
一個目錄是對于倉庫索引的簡單引用。你看以通過點擊在catalog下拉菜單旁邊的Configure...按鈕來管理一組m2eclipse已經了解的目錄。如果你有你自己的archetype需要加入到這個列表中,可以點擊Add Archetype...。
一旦你選擇了一個archetype,Maven會從Maven倉庫取得相應的artifact然后使用這個archetype創建一個新的Eclipse項目。
14.5.3.?創建一個 Maven 模塊
m2eclipse提供了創建一個Maven模塊的能力。創建一個Maven模塊和創建一個Maven項目幾乎一樣,它也會用Maven archetype創建一個新的Maven項目。然而,一個Maven模塊是另一個Maven項目的子項目,后者通常被認為是父項目。
Figure?14.5.?創建一個Maven模塊
當創建一個新的Maven模塊的時候你必須選擇一個在Eclipse中存在的父項目。點擊瀏覽按鈕,會看到一個已存在的項目的列表,如Figure?14.6, “為一個新的Maven模塊選擇一個父項目”:
Figure?14.6.?為一個新的Maven模塊選擇一個父項目
在該列表中選擇了一個父項目之后,你回到了創建新Maven模塊的窗口,父項目字段已被填充,如Figure?14.5, “創建一個Maven模塊”所示。點擊Next你將會看到來自Section?14.5.2, “用Maven Archetype創建一個Maven項目”的標準archetype列表,然后你可以選擇用哪個archetype來創建Maven模塊。
14.6.?創建一個Maven POM文件
另外一個m2eclipse提供的重要特性是它能創建一個新的Maven POM文件。m2eclipse提供了一個向導,可以用來很輕松的為一個已經在Eclipse中的項目創建一個新的POM文件。這個POM創建向導如Figure?14.7, “創建一個新的POM”所示:
Figure?14.7.?創建一個新的POM
創建一個新的Maven POM大致就是選擇一個項目,在m2eclipse提供的字段中輸入Group Id,,Artifact Id,,Version,選擇打包類型,以及提供一個名稱。點擊Next按鈕開始添加依賴。
Figure?14.8.?為新的POM添加依賴
正如你能在Figure?14.8, “為新的POM添加依賴”看到的,POM中現在還沒有依賴。點擊Add按鈕以向中央Maven倉庫查詢依賴,如Figure?14.9, “向中央倉庫查詢依賴”所示:
Figure?14.9.?向中央倉庫查詢依賴
查詢依賴只是簡單的輸入你需要的構件的groupId。Figure?14.9, “向中央倉庫查詢依賴”展示了對org.apache.commons的一個查詢,其中commons-vfs已被展開以查看可用的版本。選中commons-vfs的1.1-SNAPSHOT版本然后點擊OK,你會回到依賴選擇界面,你可以查詢更多的構件或者直接點擊finish按鈕以創建POM。當你搜索依賴的時候,m2eclipse正使用在Nexus倉庫管理器中使用的同樣的Nexus倉庫索引。
現在你已經看到了m2eclipse創建新項目的特性,讓我們看一下一組類似的將項目引入Eclipse的特性。
14.7.?導入Maven項目
m2eclipse為導入Maven項目至Eclipse提供了三種選擇,分別是:
-
導入一個已存在的Maven項目
-
從SCM簽出一個Maven項目
-
具體化一個Maven項目
Figure?14.10, “導入一個Maven項目” 展示了m2eclipse提供的帶有Maven選項的項目導入向導:
Figure?14.10.?導入一個Maven項目
使用Eclipse中的命令File → ,然后在過濾字段中輸入單詞maven,就可以看到Figure?14.10, “導入一個Maven項目”的對話框。正如前面提到的,導入一個Maven項目至Eclipse有三種可用的方法:現存的Maven項目,從SCM簽出一個項目,以及具體化Maven項目。
從Subversion導入一個Maven項目和前一節討論的從Subversion創建一個Maven項目是等同的,因此再次討論就顯得冗余了。讓我們往前走,看一下導入Maven項目至Eclipse的另外兩個選項。
14.7.1.?導入一個Maven項目
m2eclipse可以通過一個已存在的pom.xml導入一個Maven項目。通過指向Maven項目所在的目錄,m2eclipse能探測到該項目中的所有POM,然后提供一個這些POM的層次列表,如Figure?14.11, “導入一個多模塊的Maven項目”。
Figure?14.11.?導入一個多模塊的Maven項目
Figure?14.11, “導入一個多模塊的Maven項目” 顯示了被導入的項目的視圖。注意該項目中所有的POM是分層的。這讓你能夠很簡單的選擇到你想要導入至Eclipse的POM(也就是你想要導入的項目)。當你選擇了你想要導入的項目之后,m2eclipse會使用Maven導入并構建這個項目。
14.7.2.?具體化一個Maven項目
Maven還提供了“具體化”一個Maven項目的能力。具體化類似于從Subversion簽出一個Maven項目的過程,但此時Subversion URL是從項目的根POM文件找到的,而不是手工的輸入。如果一個POM文件有正確的元素來指定源代碼倉庫的位置,你就能僅僅通過這個POM文件來“具體化”Maven項目。使用這個特性,你可以瀏覽中央Maven倉庫中的項目,然后將其具體化成Eclipse項目。如果你的項目依賴于一個第三方的開源庫,而且你需要查看這個庫的源碼,具體化的特性就變得十分方便和實用。現在只需要實用m2eclipse魔術般的“具體化”特性將項目導入到Eclipse中,而不是去追查項目的web站點然后尋找如何將其從Subversion簽出。
Figure?14.12, “Materializing a Maven Project” 展示了選擇具體化Maven項目后的向導:
Figure?14.12.?Materializing a Maven Project
注意在這個對話框中Maven artifacts是空的。這是因為還沒有添加項目。為了添加一個項目,你需要點擊右邊的Add按鈕然后選擇一個來自中央Maven倉庫的依賴以添加。Figure?14.13, “選擇一個構件以具體化”展示了如何添加一個項目:
Figure?14.13.?選擇一個構件以具體化
當輸入查詢的時候,候選的依賴將會被在本地Maven倉庫找到。花幾秒鐘對本地Maven倉庫索引之后,候選依賴列表就會顯示。選擇一個要添加的依賴然后點擊OK,這樣它們就會被添加到列表中如Figure?14.14, “具體化Apache Camel”。
Figure?14.14.?具體化Apache Camel
在添加一個依賴的時候,你有一個選項,讓m2eclipse簽出這個構件的所有項目。
14.8.?運行Maven構建
m2eclipse修改了和菜單,以讓你能夠在Eclipse中運行Maven。Figure?14.15, “通過Run As..運行一個Eclipse構建”展示了一個m2eclipse項目的菜單。從這個菜單你可以運行一些常用的生命周期過程如clean,install,或者package。你也可以載入運行配置對話框窗口,然后使用參數及更多的選項來配置一個Maven構建。
Figure?14.15.?通過Run As..運行一個Eclipse構建
如果你需要用更多的選項來配置一個Maven構建,你可以選擇然后創建一個Maven構建。Figure?14.16, “配置一個Maven構建作為一個運行配置”展示了配置一個Maven構建的運行配置對話框。
Figure?14.16.?配置一個Maven構建作為一個運行配置
運行配置對話框允許你指定多個目標和profile,它暴露了類似于“skip tests”和“update snapshots”的選項,并且允許你自定義從項目到JRE到環境變量的一切。你可以使用這個對話框來支持任何你希望在m2eclipse中啟動的自定義Maven構建。
14.9.?使用Maven進行工作
當項目在Eclipse中的時候,m2eclipse插件為使用Maven提供了一組特性。有很多特性使得在Eclipse中使用Maven變得十分容易,讓我們仔細看一下。在前一節,我們具體了一個Maven項目并且選擇了一個來自于Apache Camel的名為camel-core的子項目。我們將使用這個項目來演示這些特性。
通過在camel-core項目上右擊,然后選擇Maven菜單項,你能看到可用的Maven特性。Figure?14.17, “可用的Maven特性”展示了這些特性的一個快照。
Figure?14.17.?可用的Maven特性
注意在Figure?14.17, “可用的Maven特性”中camel-core項目可用的特性包括:
-
添加依賴和插件
-
更新依賴,快照和源代碼文件夾
-
創建一個Maven模塊
-
下載源代碼
-
打開項目的URL如項目Web頁面,問題追蹤系統,源碼控制,和持續集成工具
-
開啟/關閉工作臺解析器,嵌套Maven模塊和依賴管理
這些特性都能幫你節省很多時間,讓我們先簡單的看一下。
14.9.1.?添加及更新依賴或插件
讓我們假設我們想要給camel-core POM添加一個依賴或者一個插件。為了示范,我們會添加commons-lang作為一個依賴。(請注意添加依賴或者插件的功能完全一樣,因此我們就用添加一個依賴作為示范。)
m2eclipse為給一個項目添加依賴提供了兩種選項。第一種選項是通過手動的編輯POM文件的XML內容來添加一個依賴。這種手動編輯POM文件方式的缺點是你必須知道構件的信息,或者,你可以使用下一節討論的特性來手工的定位倉庫索引中的構件信息。好處是在你手工添加依賴并保存POM文件之后,項目的Maven依賴容器會自動更新以包含這個新的依賴。Figure?14.18, “手動給項目的POM添加一個依賴”展示了如何給camel-consolePOM 添加對commons-lang的依賴,然后Maven依賴容器自動更新并包含了這個依賴。
Figure?14.18.?手動給項目的POM添加一個依賴
手動添加依賴效果不錯但是它比第二種方式需要更多的工作。在手動給POM添加依賴元素的時候,Eclipse工作臺右下角的進程反映了這一動作,如Figure?14.19, “更新Maven依賴”:
Figure?14.19.?更新Maven依賴
第二種添加依賴的方式容易得多,因為你不需要知道構件的除groupId以外的信息。Figure?14.20, “搜索依賴”展示了這種功能:
Figure?14.20.?搜索依賴
通過簡單的在搜索框中輸入信息,m2eclipse會查詢倉庫索引,顯式在本地Maven倉庫中構件的版本。這種方式更好因為它能節省大量的時間。有了m2eclipse,你不再需要中央Maven倉庫中搜尋一個構件版本。
14.9.2.?創建一個Maven模塊
m2eclipse使得在一個多模塊的Maven項目中創建一系列的嵌套項目變得十分容易。如果你有一個父項目,而且你想給這個項目添加一個模塊,只需要在項目上右擊,打開Maven菜單,選擇“New Maven Module Project”。m2eclipse會帶你創建一個新項目,之后他會更新父項目的POM以包含子模塊的引用。在m2eclipse出現之前,很難在Eclipse中使用Maven項目的層次特性。有了m2eclipse,父子項目關系的底層細節被集成到了開發環境中。
14.9.3.?下載源碼
如果中央Maven倉庫包含了某個特定項目的源碼構件,你可以從倉庫下載這份源碼然后在Eclipse環境中使用它。當你正在Eclipse中調試一個復雜的問題的時候,沒有什么能比在Eclipse調試器中的第三方依賴上右擊然后研究源碼來的更方便的了。選擇該選項之后,m2eclipse會嘗試著從Maven倉庫下載源碼構件。如果不能取得源碼構件,你應該去問項目的維護者,讓他上傳適當的Maven源碼至中央Maven倉庫。
14.9.4.?打開項目頁面
一個Maven POM包含一些開發者可能需要查閱的有很有價值的URL。它們包括項目的web頁面,源代碼倉庫的URL,如Hudson之類的持續集成系統的URL,問題追蹤系統的URL。如果這些URL在項目的POM中存在,m2eclipse就能在瀏覽器中打開這些項目頁面。
14.9.5.?解析依賴
你可以配置項目讓它從workspace中解析依賴。這種配置改變了Maven定位依賴構件的方式。如果項目被配置成從workspace解析依賴構件,這些構件就不需要存在于你的本地倉庫。假設項目a和項目b都在同一個Eclipse workspace中,項目a依賴于項目b。如果workspace依賴解析被關閉了,項目a的Maven構建只有在項目b的構件存在于本地倉庫時才會成功。如果workspace依賴解析開啟了,m2eclipse就通過eclipse workspace解析這個依賴。換句話說,當workspace依賴解析開啟的時候,項目之間的相互關聯不需要通過本地倉庫安裝。
你也可以關閉依賴管理。這種配置的效果是告訴m2eclipse停止管理你項目的classpath,也會從你項目中移除Maven依賴classpath容器。如果你這么做了,管理你項目的classpath就全靠你自己了。
14.10.?使用Maven倉庫進行工作
m2eclipse也提供了一些工具使得使用Maven倉庫變得容易一些。這些工具提供的功能包括:
-
搜索構件
-
搜索Java類
-
為Maven倉庫編制索引
14.10.1.?搜索 Maven 構件和 Java 類
m2eclipse為Eclipse Navigation菜單添加幾個項目,使搜索Maven構件和Java類變得容易。點擊菜單就能使用這些選項,如Figure?14.21, “搜索構件和類”:
Figure?14.21.?搜索構件和類
注意在Figure?14.21, “搜索構件和類”中在Eclipse菜單下面可用的選項名為和。選項允許你在Maven倉庫中搜索POM,如Figure?14.22, “搜索一個POM”:
Figure?14.22.?搜索一個POM
選擇一個構件然后點擊OK,這個構件的POM在Eclipse被打開以備瀏覽或者編輯。當你需要快速看一下某個構件的POM的時候,該功能十分方便。
菜單中第二個m2eclipse選項名為。該特性允許你通過名稱在遠程倉庫中搜索一個Java類。打開這個對話框,鍵入‘factorybean’你就能看到名字帶有FactoryBean的很多類,如Figure?14.23, “在倉庫中搜索類”:
Figure?14.23.?在倉庫中搜索類
這是一個很能節省時間的特性,有了它,手工在Maven倉庫中搜索構件中的類成為了過去。如果你需要使用一個特定的類,就打開Eclipse,至菜單然后搜索類。m2eclipse會顯示一個搜索結果構件的列表。
14.10.2.?為Maven倉庫編制索引
Maven索引視圖允許你手動的瀏覽遠程倉庫的POM并在Eclipse中打開它們。要查看這個視圖,打開View → →,在搜索框中鍵入單詞“maven”,你應該能看到一個名為Maven索引的視圖,如Figure?14.24, “打開Maven索引視圖”:
Figure?14.24.?打開Maven索引視圖
選擇這個視圖然后點擊OK。你將會看到如Figure?14.25, “Maven索引視圖”的Maven索引視圖。
Figure?14.25.?Maven索引視圖
此外,Figure?14.26, “從索引視圖定位一個POM”展示手動導航至Maven索引視圖之后,定位一個 POM。
Figure?14.26.?從索引視圖定位一個POM
在找到apache-camel構件之后,雙擊它會將在Eclipse中打開,以瀏覽或編輯。
這些特性使得在Eclipse中操作遠程倉庫變得更快更方便。過去一些年你可能已經花了很多時間來手工的進行這些操作——通過瀏覽器訪問倉庫,下載構件然后使用grep程序查找類和POM——你會發現m2eclipse是一種受歡迎的更好的變化。
14.11.?使用基于表單的POM編輯器
m2eclipse的最新版本有個基于表單的POM編輯器,能讓你通過一個易用的GUI接口來編輯項目pom.xml的每一個部分。要打開POM編輯器,點擊項目的pom.xml文件。如果你為pom.xml文件定制了編輯器,POM編輯器不是默認的編輯器,你可以在這個文件上右擊然后選擇“Open With... / Maven POM Editor”。POM編輯器會顯示Overview標簽頁如Figure?14.27, “idiom-core的POM編輯器的Overview標簽頁”。
一個針對Maven的常見的抱怨是,在十分復雜的多模塊項目構件中,它讓開發人員面對十分巨大的XML文檔。雖然本書的作者相信這只是為類似Maven的工具有帶來的彈性所付出的小小的代價,但圖形化的POM編輯器這樣的工具能讓用戶在不知道MavenPOM背后的XML結構的情況下就能使用Maven。
Figure?14.27.?idiom-core的POM編輯器的Overview標簽頁
Figure?14.27, “idiom-core的POM編輯器的Overview標簽頁”中展示的項目的artifactId是idiom-core。你會注意到項目idiom-core的大部分字段是空的。POM編輯器中沒有groupId或者version,也沒有SCM信息。這是因為idiom-core從一個名為idiom的父項目中繼承了大部分的信息。如果我們在POM編輯器中打開父項目的pom.xml文件,我們會看到如Figure?14.28, “idiom父項目的POM編輯器的Overview標簽頁”的Overview標簽頁。
整個POM編輯器中各種各樣的列表條目上的“打開文件夾”圖標說明對應的條目在Eclipse workspace中存在,“jar”圖標說明構件引用了Maven倉庫。你可以雙擊這些條目,在POM編輯器中打對應的POM。這對模塊,依賴,插件和其它對應于Maven構件的元素都是有效的。POM編輯器中一些部分中帶下劃線的字段代表了超鏈接,可以用來為對應的Maven構件打開POM編輯器。
Figure?14.28.?idiom父項目的POM編輯器的Overview標簽頁
在這個父POM中,我們看到了groupId和version的定義,它還提供了idiom-core項目所沒有很多信息。POM編輯器會給你看你能夠編輯的POM內容,它不會給你看任何繼承來的值。如果你想在POM編輯器中看idiom-core項目的有效POM,你可以使用POM編輯器右上角工具欄的“Show Effective POM”圖標,該圖標的樣子是藍色M字母上面有一個左括弧與等于標記。它會在POM編輯器中為項目idiom-code載入有效POM如Figure?14.29, “idiom-core的有效POM”。
Figure?14.29.?idiom-core的有效POM
這個有效POM歸并了idiom-core的POM和它祖先的POM(父,祖父,等等。),它其實就是使用了“mvn help:effective-pom”命令為idiom-core編輯器顯示有效值。由于POM編輯器顯示了很多不同POM歸并而來的組合視圖,因此這個有效POM編輯器是只讀的,你不能更新這個有效POM視圖中的任何字段。
如果你正在觀察Figure?14.27, “idiom-core的POM編輯器的Overview標簽頁”中的idiom-core項目的POM編輯器,你還能夠使用編輯器右上角工具欄上的“Open Parent POM”圖標來導航至它的父項目的POM。
POM編輯器顯示了很多來自POM的不同信息。最后一個標簽頁將pom.xml顯示為一個XML文檔。在Figure?14.30, “POM編輯器的Dependencies標簽頁”中有一個依賴標簽頁,它暴露了而一個易用的接口以添加和編輯你項目的依賴,以及POM的dependencyManagement部分。m2eclipse插件中的依賴管理屏幕也集成了構件搜索功能。你可以用搜索框來取得“Dependency Details”部分的字段信息。
如果你想知道關于某個構件更多的信息,可以使用“Dependency Details”部分的工具欄的“Open Web Page”圖標來查看項目的web頁面。
Figure?14.30.?POM編輯器的Dependencies標簽頁
Figure?14.31, “POM編輯器的Build標簽頁”所示的build標簽頁能讓你訪問build元素的內容。從這個標簽你能夠自定義源代碼目錄,添加擴展,改變默認目標名稱,以及添加資源目錄。
Figure?14.31.?POM編輯器的Build標簽頁
我們只是展示了POM編輯器功能的一個很小的子集。如果你對余下的標簽頁感興趣,請下載并安裝m2eclipse插件。
14.12.?在m2eclipse中分析項目依賴
最新版本m2eclipse的POM編輯器提供了一些依賴工具。這些工具承諾要改變人們維護及監視項目傳遞性依賴的方式。Maven的主要吸引力之一是它能夠管理項目的依賴。如果你正在編寫一個依賴于Spring Framework的Hibrenate 3集成的應用程序,你所要做的僅僅是依賴來自中央Maven倉庫的spring-hibernate3構件。Maven會讀取這個構件的POM然后添加所有必要的傳遞性依賴。雖然一開始這是一個吸引人們使用Maven的強大特性,但當一個項目有數十個依賴,每個依賴又有數十個傳遞性依賴的時候這就變得令人費解。
當你依賴于一個項目,這個項目有一個編寫得很差的POM,它未能將依賴標記為可選,或者當你開始遇到傳遞性依賴之間的沖突,這個時候問題就出現了。如果你有一個需求要將類似于commons-logging或servlet-api的依賴排除,又或者你需要弄清楚為什么在某個特定的范圍下一個特定的依賴顯現了,通常你需要從命令行調用dependency:tree和dependency:resolve目標來追蹤那些令人不愉快的傳遞性依賴。
這個時候m2eclipse的POM編輯器就便捷多了。如果你打開一個有很多依賴的項目,你可以打開Dependency Tree標簽頁并查看顯示為兩列的依賴如Figure?14.32, “POM編輯器的Dependency Tree標簽頁”。面板的左邊顯示樹狀的依賴。樹的第一層包含了你項目的直接依賴,每個下一層依賴列出了依賴的依賴。左邊的這一塊是了解某個特定的依賴如何進入你項目的已解析依賴的很強大方式。面板的右邊顯示所有已解析的依賴。這是在所有沖突和范圍已解決后的有效依賴的列表,也就是你項目將用來編譯,測試和打包的有效依賴列表。
Figure?14.32.?POM編輯器的Dependency Tree標簽頁
Dependency Tree標簽頁這一特性非常有價值,因為它能被用作一個偵測工具來找出某個特定的依賴是如何進入已解析的依賴列表的。編輯器中的搜索和過濾功能使得搜索和瀏覽項目的依賴變得十分容易。你可以使用編輯器工具欄的搜索框和“Dependency Hierarchy”及“Resolved Dependencies”部分的“排序”和“過濾”圖標來查看依賴。Figure?14.33, “在依賴樹中定位依賴”展示了當你點擊“Resovled Dependencies”列表中的commons-logging的時候會發生什么。當“Dependencies Hierarchy”部分的過濾器被開啟的時候,在已解析依賴上點擊的時候,面板左邊的依賴樹會被過濾,以顯示所有對已解析依賴起作用的節點。如果你正在試圖去除一個已解析依賴,你可以使用這個工具來找出什么依賴(以及什么傳遞性依賴)對這個已解析的依賴起作用。換句話說,如果你要從你的依賴集合中去除類似于commons-logging這樣的依賴,那么Dependency Tree標簽頁就是你想要使用的工具。
Figure?14.33.?在依賴樹中定位依賴
m2eclipse還能讓你以圖的形式查看你項目的依賴。Figure?14.34, “以圖的形式查看項目的依賴”展示了idiom-core的依賴。最頂上的方框就是idiom-core項目,其它的依賴都在它的下面。直接依賴與頂層方框直接相連,傳遞性依賴則都最終連接這些直接依賴。你可以在圖中選擇一個節點,跟它相連的依賴會被標亮,或者你可以使用頁面頂部的搜索框來尋找匹配的節點。
注意每個圖節點上的“打開文件夾”圖標說明這個構件存在與Eclipse workspace中,而“jar”圖標說明這個節點的構件指向了Maven倉庫。
Figure?14.34.?以圖的形式查看項目的依賴
通過在編輯器中右擊可以改變圖的表現形式。你可以選擇顯示構件的id,group id,version,scope,或者卷起節點文本,顯示圖標。Figure?14.35, “依賴圖的放射狀布局”展示了和Figure?14.34, “以圖的形式查看項目的依賴”一樣的圖,但是用了放射狀布局。
Figure?14.35.?依賴圖的放射狀布局
14.13.?Maven 選項
對于使用Maven開發來說,調整Maven首選項和一些Maven參數是非常重要的,m2eclipse能讓你通過Eclipse中的Maven首選項頁面來調整一些選項。典型情況下當在命令行使用Maven的時候,這些首選項是可以在目錄~/.m2或者命令行選項中設置的。m2eclipse能讓你在EclipseIDE中訪問一些最重要的選項。Figure?14.36, “Eclipse的Maven首選項”展示了在Eclipse中的Maven首選項頁面:
Figure?14.36.?Eclipse的Maven首選項
頂部的復選框提供的功能有:
-
在離線的狀態下運行Maven,關閉從遠程倉庫進行下載的功能。
-
在Maven控制臺中開啟調試輸出
-
從遠程Maven倉庫下載構件的源碼jar文件
-
從遠程Maven倉庫下載構件的JavaDoc Jar文件
-
在啟動的時候下載并更新本地的對遠程倉庫的索引
下一部分提供了一個彈出式菜單,讓你選擇當項目被引入以及項目的源碼文件夾被更新的時候執行什么Maven目標。默認的目標名為process-resources,它會拷貝并處理項目的資源文件至目標目錄,以讓項目可以隨時打包。如果你需要運行一些自定義的目標以處理資源文件或者生成一些支持性配置,那么定制這個目標列表就非常有用。
如果你需要m2eclipse幫你選擇一個目標,點擊按鈕Select...,會看到“Goals”對話框。左邊的Figure?14.37, “Maven目標對話框”對話框展示了默認Maven生命周期中所有階段列表的一個目標對話框。
Figure?14.37.?Maven目標對話框
當你第一次看到這個目標對話框的時候,你可能會被它羅列的這么多目標所嚇到。事實上,確實有數百個Maven插件做各種各樣的事情,從生成數據庫,到執行集成測試,到運行靜態分析,到使用XFire生成web service。目標對話框中,帶有可選的目標的插件有超過200個,右邊的對話框Figure?14.37, “Maven目標對話框”展示了一個Tomcat Maven插件的目標被標亮的“Goals”對話框。你可以通過在搜索框內輸入文字來縮小可用目標的數量,當你輸入文字的時候,m2eclipse會收縮可用目標的列表,當然,這些目標包含了搜索框內的關鍵字。
另外一個Maven選項頁面是Maven安裝配置頁面如Figure?14.38, “Maven安裝選項頁面”:
Figure?14.38.?Maven安裝選項頁面
這個頁面能讓你往Eclipse環境中添加其它的Maven安裝。如果你想要讓m2eclipse插件使用一個不同版本的Maven,你可以在這個頁面配置多個Maven安裝,這非常類似于在Eclipse中配置多個可運行的Java虛擬機。一個被稱為Maven嵌入器的Maven的嵌入版本已經被指定了。這就是我們在Eclipse中運行Maven的版本。如果你有另外一個Maven安裝,而且你想要用它來運行Maven而不是Maven嵌入器,你可以實時的通過點擊Add..來添加另外的Maven。Figure?14.38, “Maven安裝選項頁面”展示了一個列出Maven嵌入器,Maven 2.0.9,和Maven 2.1-SNAPSHOT的配置頁面。
安裝配置頁面也允許你指定全局Maven settings文件的位置。如果你不在這個頁面指定該文件的位置,Maven會使用位于所選Maven安裝目錄的conf/settings.xml作為默認全局配置文件。你也可以自定義用戶settings文件的位置,默認它位于~/.m2/settings.xml,你還可以自定義你的本地Maven倉庫位置,其默認值是~/.m2/repository。
Eclipse選項中還能開啟一個裝飾器,它的名字是Maven版本裝飾器。這個選項可以讓你在Eclipse包瀏覽器中看到項目的當前版本,如Figure?14.39, “開啟Maven版本裝飾器”:
Figure?14.39.?開啟Maven版本裝飾器
要開啟這個選項,只要選中Maven版本修飾器選項,如在Figure?14.39, “開啟Maven版本裝飾器”中標亮的。如果Maven版本修飾器沒有開啟,項目只會在包瀏覽器中列出它的名稱和相對路徑,如Figure?14.40, “沒有Maven版本裝飾器的包瀏覽器”:
Figure?14.40.?沒有Maven版本裝飾器的包瀏覽器
開啟了Maven版本裝飾器之后,項目的名稱將會包括當前的項目版本,如Figure?14.41, “開啟了Maven版本裝飾器的包瀏覽器”:
Figure?14.41.?開啟了Maven版本裝飾器的包瀏覽器
這個特性十分有用,你能很方便的看到項目的版本而不再需要打開POM去找version元素。
14.14.?小結
m2eclipse不僅僅是一個為Eclipse添加Maven支持的簡單插件,它集成得非常全面,從創建新項目到定位第三方依賴,難易度的降低都是數量級的。m2eclipse是對于一個通曉中央Maven倉庫這一豐富語義資源的IDE的第一步嘗試。隨著越來越多的人開始使用m2eclipse,更多的項目將會發布Maven Archetype,更多的項目會看到往Maven倉庫發布源碼構件的價值。如果你曾經在沒有一個能理解Maven層級結構關系的工具的情況下,嘗試一起使用Eclipse和Maven,你就會知道支持嵌套項目的這一特性,對于EclipseIDE和Maven的集成來說,是至關重要的。
?
?
=========
http://m2eclipse.sonatype.org/sites/m2e?
?
?
本段節選自http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033805.html
?
Eclipse是一款非常優秀的IDE。除了基本的語法標亮、代碼補齊、XML編輯等基本功能外,最新版的Eclipse還能很好地支持重構,并且集成了JUnit、CVS、Mylyn等各種流行工具。可惜Eclipse默認沒有集成對Maven的支持。幸運的是,由Maven之父Jason Van Zyl創立的Sonatype公司建立了m2eclipse項目,這是Eclipse下的一款十分強大的Maven插件,可以訪問http://m2eclipse.sonatype.org/ 了解更多該項目的信息。
本小節將先介紹如何安裝m2eclipse插件,本書后續的章節會逐步介紹m2eclipse插件的使用。
現在我以Eclipse 3.6為例逐步講解m2eclipse的安裝。啟動Eclipse之后,在菜單欄中選擇Help,然后選擇Install New Software…,接著你會看到一個Install對話框,點擊Work with:字段邊上的Add按鈕,你會得到一個新的Add Repository對話框,在Name字段中輸入m2e,Location字段中輸入http://m2eclipse.sonatype.org/sites/m2e,然后點擊OK。Eclipse會下載m2eclipse安裝站點上的資源信息
?
?
安裝Maven后每次啟動出現警告信息:
Eclipse is running in a JRE, but a JDK is required
Some Maven plugins may not work when importing projects or updating source folders.
本段節選自 http://liguoliang.com/2010/eclipse-is-running-in-a-jre-but-a-jdk-is-required/
?
分兩步解決問題:
1. 檢查Eclipse正在使用的JRE
‘Window’ -> ‘Preferences’ -> ‘Java’ -> ‘Installed JREs’ 確定正在使用JDK而非JRE.
如果沒有JDK, 則先新增一個Standard VM.
2. 配置Eclipse.ini
檢查Eclipse配置文件, 增加/編輯以下代碼:
?
view plaincopy to clipboardprint??
-vm C:\Progra~2\Java\jdk1.6.0_16\jre\bin\javaw注意事項:
1. 第一行參數名稱, 第二行為值, 不能寫到同一行中
2. 關于第二行的值, 因為不允許出現空格, 所以使用Progra~1或2 替代”Program Files (x86)”.
如果在Program Files下, 請使用Progra~1, 如果在x86下, 則使用Progra~2
3. 在文件中的位置, 不能放到最后(不能在-vmargs之后), 不放心的直接放到文件最前, 如:
?
view plaincopy to clipboardprint??
-vm C:\Progra~2\Java\jdk1.6.0_16\jre\bin\javaw -startup ..... --launcher.defaultAction openFile -vmargs -Dosgi.requiredJavaVersion=1.5 -Xms240m -Xmx912m3. 重啟Eclipse, 警告不再出現.
?
總結
以上是生活随笔為你收集整理的安装maven到Eclipse的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: maven 配置篇 之pom.xml
- 下一篇: Spring中的Advice类型及其应用