Maven 是干什么的,為什么要用【整理】


 

Maven是什么,以及為什么要使用Maven

 

Maven是什么,以及為什么要使用Maven
參考書籍(推薦大家購買實體書):《Maven實戰》(國內首本Maven著作)(Maven的安裝、配置及使用入門)

1.概述
Maven是一個構建工具,服務與構建.使用Maven配置好項目后,輸入簡單的命令,如:mvn clean install,Maven會幫我們處理那些繁瑣的任務.
Maven是跨平台的.
Maven最大化的消除了構建的重復.
Maven可以幫助我們標准化構建過程.所有的項目都是簡單一致的,簡化了學習成本.
總之,Maven作為一個構建工具,不僅幫我們自動化構建,還能抽象構建過程,提供構建任務實現.他跨平台,對外提供一致的操作接口,這一切足以使他成為優秀的,流行的構建工具.
但是Maven不僅是構建工具,他還是一個依賴管理工具和項目信息管理工具.他還提供了中央倉庫,能幫我們自動下載構件.
使用Maven還能享受一個額外的好處,即Maven對於項目目錄結構、測試用例命名方式等內容都有既定的規則,只要遵循了這些成熟的規則,用戶在項目間切換的時候就免去了額外的學習成本,可以說是約定優於配置(Convention Over Configuration)。


2.對比,Maven,IDE,Mark,Ant
a.IDE:基本上所有的主流IDE都集成了Maven,我們可以在IDE中方便的運行Mave執行構建.IDE依賴大量的手工操作。編譯、測試、代碼生成等工作都是相互獨立的,很難一鍵完成所有工作。手工勞動往往意味着低效,意味着容易出錯很難在項目中統一所有的IDE配置,每個人都有自己的喜好。也正是由於這個原因,一個在機器A上可以成功運行的任務,到了機器B的IDE中可能就會失敗。
所以,要合理使用IDE,不過多依賴.Maven是專家.

b.Make也許是最早的構建工具,具體不詳,沒用過,可以不了解.Make的強大之處在於它可以利用所有系統的本地命令,尤其是UNIX/Linux系統,豐富的功能、強大的命令能夠幫助Make快速高效地完成任務。
但是,Make將自己和操作系統綁定在一起了。也就是說,使用Make,就不能實現(至少很難)跨平台的構建,這對於Java來說是非常不友好的。此外,Makefile的語法也成問題,很多人抱怨Make構建失敗的原因往往是一個難以發現的空格或Tab使用錯誤。


c.Ant是意指“另一個整潔的工具”(Another Neat Tool),它最早用來構建著名的Tomcat,其作者James Duncan Davidson創作它的動機就是因為受不了Makefile的語法格式。我們可以將Ant看成是一個Java版本的Make,也正因為使用了Java,Ant是跨平台的。此外,Ant使用XML定義構建腳本,相對於Makefile來說,這也更加友好。
和Make一樣,Ant也都是過程式的,開發者顯式地指定每一個目標,以及完成該目標所需要執行的任務。針對每一個項目,開發者都需要重新編寫這一過程,這里其實隱含着很大的重復。Maven是聲明式的,項目構建過程和過程各個階段所需的工作都由插件實現,並且大部分插件都是現成的,開發者只需要聲明項目的基本元素,Maven就執行內置的、完整的構建過程。這在很大程度上消除了重復。
Ant是沒有依賴管理的,所以很長一段時間Ant用戶都不得不手工管理依賴,這是一個令人頭疼的問題。幸運的是,Ant用戶現在可以借助Ivy管理依賴。而對於Maven用戶來說,依賴管理是理所當然的,Maven不僅內置了依賴管理,更有一個可能擁有全世界最多Java開源軟件包的中央倉庫,Maven用戶無須進行任何配置就可以直接享用。

3.Maven與極限編程
極限編程(XP)是近些年在軟件行業紅得發紫的敏捷開發方法,它強調擁抱變化。
首先看一下Maven如何幫助XP團隊實現一些核心價值:
?簡單。Maven暴露了一組一致、簡潔的操作接口,能幫助團隊成員從原來的高度自定義的、復雜的構建系統中解脫出來,使用Maven現有的成熟的、穩定的組件也能簡化構建系統的復雜度。
?交流與反饋。與版本控制系統結合后,所有人都能執行最新的構建並快速得到反饋。此外,自動生成的項目報告也能幫助成員了解項目的狀態,促進團隊的交流。


Maven幾乎能夠很好地支持任何軟件開發方法。

例如,在傳統的瀑布模型開發中,項目依次要經歷需求開發、分析、設計、編碼、測試和集成發布階段。從設計和編碼階段開始,就可以使用Maven來建立項目的構建系統。在設計階段,也完全可以針對設計開發測試用例,然后再編寫代碼來滿足這些測試用例。然而,有了自動化構建系統,我們可以節省很多手動的測試時間。此外,盡早地使用構建系統集成團隊的代碼,對項目也是百利而無一害。最后,Maven還能幫助我們快速地發布項目。

解決方案

從初學者使用者的角度你可以把他看成可以告別set classpath, javac 這些刀耕火種命令的利器。
作為理解,不太准確的可以說maven主要是用來解決導入java類依賴的jar,編譯java項目主要問題。(最早手動導入jar,使用Ant之類的編譯java項目)
以pom.xml文件中dependency屬性管理依賴的jar包,而jar包包含class文件和一些必要的資源文件。
當然它可以構建項目,管理依賴,生成一些簡單的單元測試報告,像現在公司的持續集成都廣泛的使用maven,
當你接觸一些項目以后你就會有更深的體會。

解決方案二:

比如之前項目導入jar。是通過copy方式導入項目中,而且還會存在jar之間的依賴和沖突。而maven解決了這些問題,只是網速不好的時候有點麻煩。只需要下載-bin.zip就可以了。md5是加密,src是包含了源文件。其他我也不是很清楚=。=

解決方案三:

jar 包管理,防止jar之間依賴起沖突 。小組之間建立個私服務,大家都用通用 的maven配置文件,不用自己手動去下載jar ,pom文件會自動管理下載好的
jar包。

解決方案四:

Maven是基於項目對象模型,可以通過一小段描述信息來管理項目的構建,報告和文檔的軟件項目管理工具。Maven能夠很方便的幫你管理項目報告,生成站點,管理JAR文件,等等。例如:項目開發中第三方jar引用的問題,開發過程中合作成員引用的jar版本可能不同,還有可能重復引用相同jar的不同版本,使用maven關聯jar就可以配置引用jar的版本,避免沖突。
你給出的圖片中binary是二進制文件,source是源碼,開發中我們需要下載的是binary文件,后綴標識壓縮的算法. 一般來說,windows系統用zip較多,linux系統用tar.gz較多。source是maven項目的源碼,探究原理時可以下載源碼進行研究。

Java項目的maven是做什么的?

maven是一個項目構建和管理的工具,提供了幫助管理 構建、文檔、報告、依賴、scms、發布、分發的方法。可以方便的編譯代碼、進行依賴管理、管理二進制庫等等。
maven的好處在於可以將項目過程規范化、自動化、高效化以及強大的可擴展性。利用maven自身及其插件還可以獲得代碼檢查報告、單元測試覆蓋率、實現持續集成等等。
下面將進行簡要介紹:

1.安裝
Maven是一個Java工具,所以你必須安裝Java環境。首先,下載Maven並解壓到你選擇的安裝目錄,例如在windows下的C:\maven,或者Linux下的/usr/local/maven。然后添加系統變量$M2_HOME和M2_HOME/bin到你的系統路徑。在終端或者命令提示里輸入以下指令:
mvn --version
這應該打印你安裝的Maven的版本,例如:
Maven version: 2.0.10
Java version: 1.6.0_12
OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"

2 下載所需插件
然后,在終端或者命令提示里輸入以下指令:
mvn
這時,系統會下載maven運行所需的.jar文件到自動生成的默認路徑為
C:\Documents and Settings\Administrator\.m2\repository的文件夾中。
這個過程大概需要十幾分鍾。

3 創建一個項目
在命令行執行以下指令:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
將注意到此命令在當前目錄創建了一個名為my-app的目錄。
src/main/java目錄包含項目源代碼,src/test/java目錄包含測試代碼,而pom.xml為項目的Project Object Model,或者POM。

4 配置eclipse的classpath
eclipse需要知道Maven的本地倉庫的路徑。所以,類路徑變量M2_REPO必須設置。在eclipse內定義一個新的classpath變量:從菜單條,選擇Window>Preferences,選擇java>Build Path>Classpath>Variables中添加名為MAVEN_REPO的變量,指向C:\Documents and Settings\Administrator\.m2\repository。如果想讓eclipse支持直接運行maven的goal,可以安裝mavenide插件。

5 如果有一個單模塊的簡單java項目,使用eclipse將十分簡單。為了從POM產生eclipse項目文件,執行以下命令:
cd my-app
mvn eclipse:eclipse
如果已經使用eclipse創建或者檢出了項目,只需在workspace中刷新項目。否則,必須將項目導入eclipse工作空間(從菜單條選擇File>Import>Existing Projects into Workspace)。

項目管理軟件Maven是用Jelly作為自己的腳本語言,因此在編寫自己的Goal時,需要了解一些Jelly的基本知識.

在Maven中,還有一些配置文件,如:project.xml,maven.xml,project.properties等.project.xml是項目的主配置文件,沒有該文件Maven是不能執行的.文件中包含的屬性,元素可以參考它的xsd文件.

一般在make java app時,都會應用很多其它的jar文件,在Maven中它提供了Repository,在這里它存有很多的jar文件.當然,在Repository中也存有Maven執行的一些類庫文件.

如果,你第一次運行Maven時,它會從網上的Repository下載需要的類庫.如果此時,網絡是斷的,就不行了.

運行Maven的site:generate,可以生成一個關於項目信息和項目報告的網站,所有的頁面都是html格式的.其中,包含非常豐富的項目信息:項目組成員,郵件列表,單元測試,javadoc等等.這樣,就可以讓人能大致把握住項目的概括.

試試吧,你會喜歡它的!


免責聲明!

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



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