1. 程式人生 > >Maven項目搭建(一):Maven初體驗

Maven項目搭建(一):Maven初體驗

測試類 java平臺 存在 ack 做的 rar cli maven2 試用

今天給大家介紹一個項目管理和綜合工具:Maven。

Maven:

maven讀作 [‘meivin],本意是指可以被信任的領域專家,致力於傳播知識(來自於http://en.wikipedia.org/wiki/Maven)。

Maven是一個跨平臺的項目管理工具。來源於Apache的開源項目。主要服務於基於Java平臺的項目構建、依賴管理和項目信息管理。

Maven是一款優秀的構建工具

我們一直在不停地需找避免重復的方法。設計的重復、編碼的重復、文檔的重復,當然還有構建的重復。Maven最大化的消除了構建的重復,抽象了構建生命周期,並且為絕大部分的構建任務提供了已實現的插件,我們不需要定義過程,甚至不需要再去實現這些過程中的一些任務。

Maven不僅僅是構建工具

maven不僅是構建工具,還是一個依賴管理工具和項目管理工具。

依賴管理

幾乎任何Java應用都會借用一些第三方的開源類庫,這些類庫通過依賴的方式引入進項目。隨著依賴的增多,版本不一致、版本沖突、依賴臃腫等問題會接踵而來。Maven提供了一個優秀的解決方案,通過坐標系統精確定位每一個構件(artifact)。

項目信息管理

maven把分散在各處的項目信息,包括項目描述、開發者列表、版本控制地址、許可證、缺陷管理系統地址等集中起來。Maven可以把這些信息生成 一個站點,用於開源項目的發布。通過一些插件,我們還可以輕松的獲得項目文檔、測試報告、靜態分析報告、源碼版本日誌報告等有價值的項目信息。

中央倉庫

maven為全世界的Java開發者提供了一個免費的中央倉庫,在其中幾乎可以找到任何流行開源類庫。通過一些衍生搜索工具,確定類庫坐標後,Maven會幫我們自動下載構建,省去手工勞動。

約定優於配置

Maven約定了項目目錄結構、測試用例命名方法等內容。只要遵循這些成熟的規則,用戶在項目間切換的時候救免去了額外的學習成本。

為什麽選Maven

Maven不是Java領域的唯一解決方案,還有IDE,Ant等。

IDE不是萬能的

像Eclipse這類優秀的IDE大大的提高了開發效率,幾乎覆蓋開發需要的全部功能,包括代碼編輯、調試、重構、編譯。然而IDE還是有不足的地方

IDE依賴大量的手工操作。

IDE存在差異性,每個開發者都有自己個個性化配置。

Ant

Ant可以看成一個Java版本的Make,也是一款非常優秀的構建工具。最早用於構建著名的Tomcat項目。但是Ant和Maven顯著的區別 是,Ant是過程式的,Maven是聲明式的。Ant可以理解為一種由xml定義的可擴展腳本語言。Ant腳本可以省去重復的勞動,Maven做得更絕, 可以省去勞動。

Ant最大的缺陷是沒有依賴管理,需要借助Ivy來解決依賴管理。通過Ivy,Ant可以依賴Maven倉庫裏的構件,但是不了Maven原生實現的那麽方便,特別是對於依賴範圍的處理。

Maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯。當你使用Maven的時候,你用一個明確定義的項目對象模型來描述你的項目,然後Maven可以應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。

首先,為什麽有maven?構建是程序員每天要做的工作,而且相當長的時間花在了這上面,而maven使這系列的工作完全自動化。 我們一直在尋找避免重復的方法,設計的重復,文檔的重復,編碼的重復,構建的重復等,maven是跨平臺的,最大的消除了構建的重復。

技術分享

maven的其他優勢:

1. maven不僅是構建工具,它還是依賴管理工具和項目管理工具,提供了中央倉庫,能夠幫我們自動下載構件。

2.為了解決的依賴的增多,版本不一致,版本沖突,依賴臃腫等問題,它通過一個坐標系統來精確地定位每一個構件(artifact)。

3.還能幫助我們分散在各個角落的項目信息,包括項目描述,開發者列表,版本控制系統,許可證,缺陷管理系統地址。

4.maven還為全世界的Java開發者提供了一個免費的中央倉庫,在其中幾乎可以找到任何的流行開源軟件。通過衍生工具(Nexus),我們還能對其進行快速搜索

5.maven對於目錄結構有要求,約定優於配置,用戶在項目間切換就省去了學習成本。

Maven的特點:項目構建,依賴管理

1、一旦服務器上安裝maven,其中包含的repo資源庫可以在任意工程中共享。Maven對所依賴的包有明確的定義,如使用那個包,版本是多少

2、依賴庫下載自動化。打開一個工程中Pom.xml,其中的dependency項中的groupID子項只要編寫好就可實現自動下載。Maven是基於中央倉庫的編譯,即把編譯所需要的資源放在一個中央倉庫裏。當編譯的時候,maven會自動在倉庫中找到相應的包,如果本地倉庫沒有,則從設定好的遠程倉庫中下載到本地。

3、外部jar包安裝只需maven install--命令行實現,也可通過插件完成 打jar包也可直接使用命令行形式,也可通過插件完成。

技術分享

下載及安裝:

1.下載最新版 Maven

下載地址 http://maven.apache.org/download.cgi

2.解壓下載的壓縮包

技術分享

3.配置環境變量

配置環境變量(需要先配置好%JAVA_HOME%環境變量): 其他配置(後面講到):settings.xml。

%MAVEN_HOME%/conf目錄下的settings.xml,該配置文件針對系統所有用戶:

技術分享

技術分享

4、查看是否配置成功

技術分享

目錄結構:

  • src/main/java-存放項目.java文件
  • src/main/resources-存放項目資源文件
  • src/test/java-存放測試類.java文件
  • src/test/resources-存放測試資源文件
  • target - 項目輸出目錄
  • pom.xml - Maven核心文件

技術分享

MyEclipse提供了Maven4MyEclipse插件,已經內置安裝了Maven;但我們通常使用自己下載配置的Maven,在Installations選項中添加我們剛才下載配置的Maven。

技術分享

新建一個 Maven Project:

技術分享

選擇 workbench Location :

技術分享

選擇 Maven Archetype(項目骨架),這裏我們選擇 maven-archetype-webapp

技術分享

設置 Maven 相關參數,Group Id,Artifact Id,Version,Package。它們共同組成 Maven 的坐標

技術分享

這裏的groupId一般命名規範沿襲java包命名規範

項目創建成功之後,我們看到 MyEclipse 默認只為我們創建了 src/main/resources,打開項目屬性 - Java Build Path,打開 Libraries,編輯 JRE 環境,選擇自己安裝的JDK

技術分享

技術分享

這時,添加src/main/java文

技術分享

設置 Project Facets。選擇 Java 1.7 版本和 Dynamic Web Module 3.0 版本

技術分享

設置部署打包結構如下

技術分享

打開pom.xml文件,我們看到Maven已經為我們添加了JUnit3.8.1的依賴,這裏我們改成 JUnit 4.11,同時添加 Servlet-api 的依賴包

技術分享

Maven已經提供大量相關jar包引用地址,但是有些jar包找不到,例如: com.springsource.net.sf.cglib-2.2.0.jar,

在maven默認的官方庫(http://repo.maven.apache.org/maven2 )沒有找到此jar,但是在http://repository.sonatype.org/content/groups/public/ 這個庫中有這個jar,因此在MyEclipse中添加這個庫即可。

在maven默認的官方庫(http://repo.maven.apache.org/maven2 )沒有找到此jar,但是在http://repository.sonatype.org/content/groups/public/ 這個庫中有這個jar,因此在eclipse中添加這個庫即可,如下:

技術分享

如果有些jar包不確定GroupId,下載地址,可以在該網站下查詢:http://mvnrepository.com/

技術分享

好了,Maven的初步介紹就先告一段落,下次我們繼續分享如何使用Maven搭建目前最流行的SSM框架。

Maven項目搭建(一):Maven初體驗