讀古今文學網 > Java程序員修煉之道 > 12.1 與Maven 3相遇 >

12.1 與Maven 3相遇

Maven是流行的Java及JVM語言相關的構建工具,然而反對它的人和支持它的人態度同樣堅決。它的設計理念是,嚴格的構建週期輔以強大的依賴管理是成功構建的必要條件。Maven不僅是構建工具,更是項目技術組件的管理工具。實際上,Maven的構建腳本叫做POM(Project Object Model,項目對像模型)文件。這些POM文件是用XML寫的,並且每個Maven項目或模塊都有一個pom.xml文件。

注意 POM文件中馬上要加入對備選語言的支持,從而滿足用戶對靈活性的要求(就像Gradle提供的那些功能)。

Ant和Gradle怎麼樣? Ant是個流行的構建工具,特別是在早年的Java項目裡。它作為公認的標準存在了相當長的一段時間。我們不準備在這裡再講了,因為之前已經有人講過上百次了。更關鍵的是,我們覺得Ant沒有強制實行通用的構建週期,也沒有一組通用(強制的)構建目標。這就是說開發人員必須研究手頭每個Ant構建的細節。如果你要用Ant,Ant網站(http://ant.apache.org)列出了所有必需的細節。 Gradle是這一領域的新秀。它有意選擇了和Maven相反的路線,限制不會那麼嚴格,你可以按自己的方式聲明構建過程。它也跟Maven一樣提供依賴管理和很多其他特性。如果你想嘗試下Gradle,可以訪問Gradle網站(www.gradle.org)瞭解更多細節。 要學習優秀的構建實踐,Maven是適合的工具。它強制你遵循Maven構建週期,一旦掌握這個構建週期,你就可以輕鬆地構建世界上任何一個Maven項目。

Maven採取了慣例優先配置的策略,並希望你能融入到它的世界觀,在源碼該怎麼佈局、屬性如何過濾等設置上都能接受它的安排。這可能會嚇著某些開發人員,但Maven的構建週期是經過多年深思熟慮總結出來的,沿著它提供的路徑走往往是最合理的。而對於那些極力反對墨守成規的人,Maven確實提供了覆蓋默認值的辦法,但那樣會做出更加繁瑣,並且標準化程度更低的構建腳本。

用Maven執行構建就是讓它執行一個或幾個目標(代表特定任務,比如編譯源碼、運行測試等)。目標都是綁到默認構建週期中的,如果你要求Maven執行測試(如mvn test),它會先編譯源碼和測試代碼。簡言之,它會強迫你遵守正確的構建週期。

如果你還沒裝Maven 3,請參見附錄A中的A.2節。在完成下載和安裝之後,再回到這裡來創建你的第一個Maven項目。