1. 程式人生 > >1、maven介紹

1、maven介紹

學習目標:

1、瞭解Maven的歷史

2、瞭解Maven的作用

3、瞭解Maven的基本命令

學習過程:

一、maven介紹

Apache Maven是一個管理和理解軟體專案的一個工具,是基於專案物件模型(POM:project object model),Maven 可以管理、生成報告和相應文件的軟體管理工具。         Maven原來的意思是知識的積累,原來是想在 Jakarta Turbine 專案使用更加簡單的構建專案的一個工具。在Maven之前可能大家使用更多的是Ant工具,但是不同的專案可能會有不同的Ant檔案定義,可能還需要匯入不同的jar包,不同的專案之間差異性比較大,那有沒有這麼一個工具可以定義一個標準來構建專案,於是Maven就這樣設計出來了。

二、Maven的目標

Maven的主要目標是為開發人員提供一個完整的專案管理,以提高開發人員的效率,使用Maven可以讓你:

1、專案的建立過程更簡單。

2、提供一個標準的建立系統。

3、提供高質量的專案資訊。

4、為良好開發提供指導。

在使用Maven的過程中你會有更多的體會,比如可以讓你方便的維護jar包,自動維護jar包的依賴關係,你再也不需要為缺包丟擲異常而煩惱,Maven還提供了很多可以複用的指令碼程式碼,提高你的開發效率等等。

三、為什麼需要Maven        

Maven不是Java領域唯一的構建管理的解決方案。本節將通過一些簡單的例子解釋Maven的必要性,並介紹其他構建解決方案,如IDE、Make和Ant,並將它們與Maven進行比較。

IDE不是萬能的,當然,我們無法否認優秀的IDE能大大提高開發效率。當前主流的IDE如Eclipse和NetBeans等都提供了強大的文字編輯、除錯甚至重構功能。雖然使用簡單的文字編輯器和命令列也能完成絕大部分開發工作,但很少有人願意那樣做。然而,IDE是有其天生缺陷的:

IDE依賴大量的手工操作。編譯、測試、程式碼生成等工作都是相互獨立的,很難一鍵完成所有工作。手工勞動往往意味著低效,意味著容易出錯。

很難在專案中統一所有的IDE配置,每個人都有自己的喜好。也正是由於這個原因,一個在機器A上可以成功執行的任務,到了機器B的IDE中可能就會失敗。

我們應該合理利用IDE,而不是過多地依賴它。對於構建這樣的任務,在IDE中一次次地點選滑鼠是愚蠢的行為。Maven是這方面的專家,而且主流IDE都集成了Maven,我們可以在IDE中方便地執行Maven執行構建。

Make將自己和作業系統繫結在一起了。也就是說,使用Make,就不能實現(至少很難)跨平臺的構建,這對於Java來說是非常不友好的。此外,Makefile的語法也成問題,很多人抱怨Make構建失敗的原因往往是一個難以發現的空格或Tab使用錯誤。

Ant不是指螞蟻,而是意指“另一個整潔的工具”(Another Neat Tool),它最早用來構建著名的Tomcat,其作者James Duncan Davidson創作它的動機就是因為受不了Makefile的語法格式。我們可以將Ant看成是一個Java版本的Make,也正因為使用了Java,Ant是跨平臺的。此外,Ant使用XML定義構建指令碼,相對於Makefile來說,這也更加友好。

Ant是沒有依賴管理的,所以很長一段時間Ant使用者都不得不手工管理依賴,這是一個令人頭疼的問題。幸運的是,Ant使用者現在可以藉助Ivy管理依賴。而對於Maven使用者來說,依賴管理是理所當然的,Maven不僅內建了依賴管理,更有一個可能擁有全世界最多Java開源軟體包的中央倉庫,Maven使用者無須進行任何配置就可以直接享用。

四、Maven的常用命令

雖然我們還沒有正式的學習Maven,但是記住一些常用命令編輯對我們以後的學習會有很多的好處,這裡先列出一些常用的Maven命令。大家可以先記住以下。

mvn archetype:create 建立Maven專案

mvn compile 編譯原始碼

mvn deploy 釋出專案

mvn test-compile 編譯測試原始碼

mvn test 執行應用程式中的單元測試

mvn site 生成專案相關資訊的網站

mvn clean 清除專案目錄中的生成結果

mvn package 根據專案生成的jar

mvn install 在本地Repository中安裝jar

mvn eclipse:eclipse 生成eclipse專案檔案

mvnjetty:run 啟動jetty服務

mvntomcat:run 啟動tomcat服務

mvn clean package -Dmaven.test.skip=true:清除以前的包後重新打包,跳過測試類