1. 程式人生 > >在Windows上安裝Maven並且整合eclipse

在Windows上安裝Maven並且整合eclipse

一:首先檢查JDK安裝

在安裝Maven之前,首先要確認你已經正確安裝了JDK(因為它是基於JDKd的)。Maven可以執行在JDK 1.4及以上的版本上執行如下的命令來檢查你的Java安裝:

C:\Users\Juven Xu>echo %JAVA_HOME%
C:\Users\Juven Xu>java -version

上述命令首先檢查環境變數JAVA_HOME是否指向了正確的JDK目錄,接著嘗試執行java命令。如果Windows無法執行java命令,或者無法找到JAVA_HOME環境變數。你就需要檢查Java是否安裝了,或者環境變數是否設定正確。

二:下載Maven

    請訪問Maven的下載頁面:http://maven.apache.org/download.html,其中包含針對不同平臺的各種版本的Maven下載檔案。對於首次接觸Maven的讀者來說,推薦使用Maven 3.0,,因此下載apache-maven-3.0-bin.zip。當然,如果你對Maven的原始碼感興趣並想自己構建Maven,還可以下載apache-maven-3.0 -src.zip。該下載頁面還提供了md5校驗和(checksum)檔案和asc數字簽名檔案,可以用來檢驗Maven分發包的正確性和安全性。
在本書編寫的時候,Maven 2的最新版本是2.2.1,Maven 3基本完全相容Maven 2,而且較之於Maven 2它效能更好,還有不少功能的改進,如果你之前一直使用Maven 2,現在正猶豫是否要升級,那就大可不必擔心了.

三:本地安裝:

         將安裝檔案解壓到你指定的目錄中,如:
D:\bin>jar xvf "C:\Users\Juven Xu\Downloads\apache-maven-3.0--bin.zip"


 這裡的Maven安裝目錄是D:\bin\apache-maven-3.0,接著需要設定環境變數,將Maven安裝配置到作業系統環境中。

java環境的配置:

JAVA_HOME  :C:\Program Files\Java\jdk1.6.0_21

Path :  ;%JAVA_HOME%\bin;

Maven 環境的配置:

M2_HOME :D:\apache-maven-3.0-bin\apache-maven-3.0

 Path :            ;%M2_HOME%\bin;

執行如下命令檢查Maven的安裝情況:

C:\Users\Juven Xu>echo %M2_HOME%
C:\Users\Juven Xu>mvn -v

第一條命令echo %M2_HOME%用來檢查環境變數M2_HOME是否指向了正確的Maven安裝目錄;

而mvn –version執行了第一條Maven命令,以檢查Windows是否能夠找到正確的mvn執行指令碼。

升級Maven:

         Maven還比較年輕,更新比較頻繁,因此使用者往往會需要更新Maven安裝以獲得更多更酷的新特性,以及避免一些舊的bug。
在Windows上更新Maven非常簡便,只需要下載新的Maven安裝檔案,解壓至本地目錄,然後更新M2_HOME環境變數便可。例如,假設Maven推出了新版本3.1,我們將其下載然後解壓至目錄D:\bin\apache-maven-3.1,接著遵照前一節描述的步驟編輯環境變數M2_HOME,更改其值為D:\bin\apache-maven-3.1。至此,更新就完成了。同理,如果你需要使用某一箇舊版本的Maven,也只需要編輯M2_HOME環境變數指向舊版本的安裝目錄。

安裝目錄分析:

     讓我們看一下該目錄的結構和內容:
bin

boot

conf

 lib

 LICENSE.txt

NOTICE.txt

README.txt

? Bin: 該目錄包含了mvn執行的指令碼,這些指令碼用來配置Java命令,準備好classpath和相關的Java系統屬性,然後執行Java命令。其中mvn是基於UNIX平臺的shell指令碼,mvn.bat是基於Windows平臺的bat指令碼。在命令列輸入任何一條mvn命令時,實際上就是在呼叫這些指令碼。該目錄還包含了mvnDebug和mvnDebug.bat兩個檔案,同樣,前者是UNIX平臺的shell指令碼,後者是windows的bat指令碼。那麼mvn和mvnDebug有什麼區別和關係呢?開啟檔案我們就可以看到,兩者基本是一樣的,只是mvnDebug多了一條MAVEN_DEBUG_OPTS配置,作用就是在執行Maven時開啟debug,以便除錯Maven本身。此外,該目錄還包含m2.conf檔案,這是classworlds的配置檔案,稍微會介紹classworlds。
? Boot: 該目錄只包含一個檔案,以maven 3.0為例,該檔案為plexus-classworlds-2.2.3.jar。plexus-classworlds是一個類載入器框架,相對於預設的java類載入器,它提供了更豐富的語法以方便配置,Maven使用該框架載入自己的類庫。更多關於classworlds的資訊請參考http://classworlds.codehaus.org/。對於一般的Maven使用者來說,不必關心該檔案。
? Conf: 該目錄包含了一個非常重要的檔案settings.xml。直接修改該檔案,就能在機器上全域性地定製Maven的行為。一般情況下,我們更偏向於複製該檔案至~/.m2/目錄下(這裡~表示使用者目錄),然後修改該檔案,在使用者範圍定製Maven的行為。本書的後面將會多次提到該settings.xml,並逐步分析其中的各個元素。
? Lib: 該目錄包含了所有Maven執行時需要的Java類庫,Maven本身是分模組開發的,因此使用者能看到諸如mavn-core-3.0.jar、maven-model-3.0.jar之類的檔案,此外這裡還包含一些Maven用到的第三方依賴如common-cli-1.2.jar、google-collection-1.0.jar等等。(對於Maven 2來說,該目錄只包含一個如maven-2.2.1-uber.jar的檔案原本各為獨立JAR檔案的Maven模組和第三方類庫都被拆解後重新合併到了這個JAR檔案中)。可以說,這個lib目錄就是真正的Maven。關於該檔案,還有一點值得一提的是,使用者可以在這個目錄中找到Maven內建的超級POM,這一點在8.5小節詳細解釋。其他: LICENSE.txt記錄了Maven使用的軟體許可證Apache License Version 2.0; NOTICE.txt記錄了Maven包含的第三方軟體;而README.txt則包含了Maven的簡要介紹,包括安裝需求及如何安裝的簡要指令等等。

安裝m2eclipse

Eclipse是一款非常優秀的IDE。除了基本的語法標亮、程式碼補齊、XML編輯等基本功能外,最新版的Eclipse還能很好地支援重構,並且集成了JUnit、CVS、Mylyn等各種流行工具。可惜Eclipse預設沒有整合對Maven的支援。幸運的是,由Maven之父Jason Van Zyl創立的Sonatype公司建立了m2eclipse專案,這是Eclipse下的一款十分強大的Maven外掛,可以訪問http://m2eclipse.sonatype.org/ 瞭解更多該專案的資訊

除了核心元件之外,m2eclipse還提供了一組額外元件,主要是為了方便與其它工具如Subversion進行整合,這些元件的安裝地址為http://m2eclipse.sonatype.org/sites/m2e-extras。使用前面類似的安裝方法

1. 重要的
? Maven SCM handler for Subclipse (Optional):Subversion是非常流行的版本管理工具,該模組能夠幫助我們直接從Subversion伺服器簽出Maven專案,不過前提是需要首先安裝Subclipse(http://subclipse.tigris.org/)。
? Maven SCM Integration (Optional):Eclipse環境中Maven與SCM集成核心的模組,它利用各種SCM工具如SVN實現Maven專案的簽出和具體化等操作。
2. 不重要的
? Maven issue tracking configurator for Mylyn 3.x (Optional):該模組能夠幫助我們使用POM中的缺陷跟蹤系統資訊連線Mylyn至伺服器。

待安裝完畢後,重啟Eclipse,現在讓我們驗證一下m2eclipse是否正確安裝了。首先,點選選單欄中的Help,然後選擇About Eclipse,在彈出的對話方塊中,點選Installation Details按鈕,會得到一個對話方塊,在Installed Software標籤欄中,檢查剛才我們選擇的模組是否在這個列表中;

如果一切正常,說明m2eclipse已經正確安裝了。
最後,關於m2eclipse的安裝,需要提醒的一點是,你可能會在使用m2eclipse時遇到類似這樣的錯誤:


09-10-6 上午01時14分49秒: Eclipse is running in a JRE, but a JDK is required Some Maven plugins may not work when importing projects or updating source folders.


這是因為Eclipse預設是執行在JRE上的,而m2eclipse的一些功能要求使用JDK,解決方法是配置Eclipse安裝目錄的eclipse.ini檔案,新增vm配置指向JDK,如
--launcher.XXMaxPermSize
256m
-vm
D:\java\jdk1.6.0_07\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx256m

我用的 eclipse.ini  配置:

-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx256m
-XX:PermSize=64M
-XX:MaxPermSize=128M
-Dfile.encoding=UTF-8

-------------------------------------------------------------------------------------

設定MAVEN_OPTS環境變數:

前面介紹Maven安裝目錄時我們瞭解到,執行mvn命令實際上是執行了Java命令,既然是執行Java,那麼執行Java命令可用的引數當然也應該在執行mvn命令時可用。這個時候,MAVEN_OPTS環境變數就能派上用場。
我們通常需要設定MAVEN_OPTS的值為:-Xms128m -Xmx512m,因為Java預設的最大可用記憶體往往不能夠滿足Maven執行的需要,比如在專案較大時,使用Maven生成專案站點需要佔用大量的記憶體,如果沒有該配置,我們很容易得到java.lang.OutOfMemeoryError。因此,一開始就配置該變數是推薦的做法。
關於如何設定環境變數,請參考前面設定M2_HOME環境變數的做法,儘量不要直接修改mvn.bat或者mvn這兩個Maven執行指令碼檔案。因為如果修改了指令碼檔案,升級Maven時你就不得不再次修改,一來麻煩,二來
容易忘記。同理,我們應該儘可能地不去修改任何Maven安裝目錄下的檔案。

配置使用者範圍settings.xml

Maven使用者可以選擇配置$M2_HOME/conf/settings.xml或者~/.m2/settings.xml。前者是全域性範圍的,整臺機器上的所有使用者都會直接受到該配置的影響,而後者是使用者範圍的,只有當前使用者才會受到該配置的影響。
我們推薦使用使用者範圍的settings.xml,主要原因是為了避免無意識地影響到系統中的其他使用者。當然,如果你有切實的需求,需要統一系統中所有使用者的settings.xml配置,當然應該使用全域性範圍的settings.xml。
除了影響範圍這一因素,配置使用者範圍settings.xml檔案還便於Maven升級。直接修改conf目錄下的settings.xml會導致Maven升級不便,每次升級到新版本的Maven,都需要複製settings.xml檔案,如果使用~/.m2目錄下的settings.xml,就不會影響到Maven安裝檔案,升級時就不需要觸動settings.xml檔案。

不要使用IDE內嵌的Maven:

無論是Eclipse還是NetBeans,當我們整合Maven時,都會安裝上一個內嵌的Maven,這個內嵌的Maven通常會比較新,但不一定很穩定,而且往往也會和我們在命令列使用的Maven不是同一個版本。這裡有會出現兩個潛在的問題:首先,較新版本的Maven存在很多不穩定因素,容易造成一些難以理解的問題;其次,除了IDE,我們也經常還會使用命令列的Maven,如果版本不一致,容易造成構建行為的不一致,這是我們所不希望看到的。因此,我們應該在IDE中配置Maven外掛時使用與命令列一致的Maven。
在m2eclipse環境中,點選選單欄中的Windows,然後選擇Preferences,在彈出的對話方塊中,展開左邊的Maven項,選擇Installation子項,在右邊的面板中,我們能夠看到有一個預設的Embedded Maven安裝被選中了,點選Add…然後選擇我們的Maven安裝目錄M2_HOME,新增完畢之後選擇這一個外部的Maven,

~/.m2:

在使用者目錄下,我們可以發現.m2資料夾。預設情況下,該資料夾下放置了Maven本地倉庫.m2/repository。所有的Maven構件(artifact)都被儲存到該倉庫中,以方便重用。我們可以到~/.m2/repository/org/apache/maven/plugins/maven-help-plugins/目錄下找到剛才下載的maven-help-plugin的pom檔案和jar檔案。Maven根據一套規則來確定任何一個構件在倉庫中的位置,這一點本書第6章將會詳細闡述。由於Maven倉庫是通過簡單檔案系統透明地展示給Maven使用者的,有些時候可以繞過Maven直接檢視或修改倉庫檔案,在遇到疑難問題時,這往往十分有用。

預設情況下,~/.m2目錄下除了repository倉庫之外就沒有其他目錄和檔案了,不過大多數Maven使用者需要複製M2_HOME/conf/settings.xml檔案到~/.m2/settings.xml。這是一條最佳實踐????

設定HTTP代理:

有時候你所在的公司由於安全因素考慮,要求你使用通過安全認證的代理訪問因特網。這種情況下,就需要為Maven配置HTTP代理,才能讓它正常訪問外部倉庫,以下載所需要的資源。
首先確認自己無法直接訪問公共的Maven中央倉庫,直接執行命令ping repo1.maven.org可以檢查網路。如果真的需要代理,先檢查一下代理伺服器是否暢通,比如現在有一個IP地址為218.14.227.197,埠為3128的代理服務,我們可以執行telnet 218.14.227.197 3128來檢測該地址的該埠是否暢通。如果得到出錯資訊,需要先獲取正確的代理服務資訊;如果telnet連線正確,則輸入ctrl+],然後q,回車,退出即可。
檢查完畢之後,編輯~/.m2/settings.xml檔案(如果沒有該檔案,則複製$M2_HOME/conf/settings.xml)。新增代理配置如下:
<settings> ? <proxies>
<proxy>
<id>my-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>218.14.227.197</host>
<port>3128</port>
<!--
<username>***</username>
<password>***</password>
<nonProxyHosts>repository.mycom.com|*.google.com</nonProxyHosts>
-->
</proxy>
</proxies> ? </settings>

這段配置十分簡單,proxies下可以有多個proxy元素,如果你聲明瞭多個proxy元素,則預設情況下第一個被啟用的proxy會生效。這裡聲明瞭一個id為my-proxy的代理,active的值為true表示啟用該代理,protocol表示使用的代理協議,這裡是http。當然,最重要的是指定正確的主機名(host元素)和埠(port元素)。上述XML配置中我註釋掉了username、password、nonProxyHost幾個元素,當你的代理服務需要認證時,就需要配置username和password。nonProxyHost元素用來指定哪些主機名不需要代理,可以使用 | 符號來分隔多個主機名。此外,該配置也支援萬用字元,如*.google.com表示所有以google.com結尾的域名訪問都不要通過代理。

安裝eclipse: \\192.168.0.101\download\開發測試\eclipsebidlink-eclipse.rar

其中集成了svn 外掛,可直接使用.

1.1 配置svn引數

1.點選windows-->show view-->others-->svn 選擇svn資源庫 :如圖:

2.填入svn的伺服器路徑後,點選finish.

3.輸入使用者名稱、密碼,並勾選記住密碼後,就可以看到svn的資源庫,如圖:

1.2 下載原始碼

Svn目錄程式碼主要分為:主幹(trunk)、分支(branches)、歷史版本(tags)。

程式碼從主幹下載。

1.開啟trunk樹,點選epsiii-webapp,右鍵-->檢出為... 如圖:

2.填寫工程名稱,其他設定預設.

3.點選next,選擇工作空間,finish.無附圖.

搭建工程

系統所需要的軟體:

Maven3 或者更高版本

apache-tomcat-5.5 以上版本

Jdk 一定要用jdk1.6.0_21版本 ,更高版本沒有測試 誰如果測試後可以幫忙修改下此處文件

這裡所做的操作是建立在tomcatjdk都安裝好的基礎上。

2.1新建工程

專案匯入到工作空間後:

1.下載 maven 

下載路徑為:\\192.168.0.101\download\開發測試\maven  

檔名:apache-maven-3.0-bin.zip

2.安裝配置maven

解壓apache-maven-3.0-bin.zip,此檔案是綠色版無需安裝,下載替換配置檔案

下載路徑:\\192.168.0.101\download\開發測試\maven 

檔名:settings.xml

替換位置:maven根目錄/conf/settings.xml

3.配置環境變數

1)新增M2_HOME環境變數,指向Maven的安裝目錄

2)Path變數中新增%M2_HOME%\bin

4.eclipse中配置tomcat服務

點選選單欄中的Windows-->Preferences-->server-->Runtime Environments,進入tomcat的配置頁面,點選Add 如圖:

2.2修改配置檔案

2.2.1與前臺整合之後的問題,修改安全檔案applicationContext-security.xml

整合之後配置檔案做了一些變化,在自己的開發環境中,SVN上下載的最新程式碼和配置檔案,需要手工把src/main/webapp/WEB-INF目錄下的WITHOUTCASapplicationContext-security.xml的內容拷貝到src/main/webapp/WEB-INF/applicationContext-security.xml,然後再啟動tomcat,否則系統登入會有問題.

直接將表格的內容覆蓋applicationContext-security.xml檔案內容即可.

2.2.2開始部署

1.給專案配置tomcat服務:

1)加入server控制檯

2)在控制檯中點選右鍵NEW-->SERVER,配置tomcat服務,如圖:

:在文件2.1中第四條要先操作

2.開啟命令列視窗進入eclipseworkspace目錄下執行命令mvn -Declipse.workspace=. eclipse:add-maven-repo,新增maven本地資源庫變數M2_REPOeclipse; 

注意:如果eclipse是開啟狀態,需要重啟下eclipse,設定的變數才生效。

3.進入專案目錄下,執行命令:mvn clean package; 如果需要跳過測試,新增引數-Dmaven.test.skip=true or -DskipTests=true 

4.執行命令:mvn eclipse:eclipse 建立eclipse的專案工程;

5.server控制檯下新建的服務中加入專案:

選中服務-->右鍵-->Add And Remove.. 如圖:

6.啟動服務訪問專案.(如果是之前已經下載的專案,那麼要clean一下)

7.需注意在pom.xml中引入的幾個配置檔案,在編譯後會直接把引數注入原始檔中,所以這幾個檔案不要提交到svn.

src/main/webapp/upload-config.properties

src/main/webapp/WEB-INF/orderplan-servlet.xml

src/main/webapp/WEB-INF/applicationContext-security.xml

3使用心得在此分享下

3.1修改java程式碼後服務會自動重啟

雙擊服務名,取消勾選 auto reload enabled 如下圖:

3.2編譯後的檔案儲存位置

Workspace 下 .metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

:如果是有多個服務 可能是tmp0 tmp1 ... 等等

3.3 xdoclet

pom.xml中 的xdoclet 配置可在第一次編譯成功後註釋掉,這樣就不用每次編譯都重新生成資料表的實體類檔案了但修改了model類後 一定要把註釋取消重新編譯.

方法需註釋兩個位置

<plugin>

<groupId>xdoclet</groupId>

<artifactId>maven2-xdoclet2-plugin</artifactId>

<version>2.0.5</version>

<executions>

<execution>

<id>xdoclet</id>

<!--phase>generate-resources</phase-->

<goals>

<goal>xdoclet</goal>

</goals>

</execution>

</executions>

<dependencies>

<dependency>

<!-- maven2-xdoclet2-plugin依賴的xdoclet v2.0.6找不到,使用v2.0.5有相容性錯誤,指定使用v2.0.4 -->

<groupId>xdoclet</groupId>

<artifactId>xdoclet</artifactId>

<version>2.0.4</version>

<exclusions>

<exclusion>

<artifactId>freemarker</artifactId>

<groupId>freemarker</groupId>

</exclusion>

</exclusions>

</dependency>

<!-- 使用v1.0.3建立的mapping檔案,在hibernate 3.1.3下有錯誤 -->

&l