Maven-01-Introduction

應該怎麼定義Maven 這樣一套工具..?

依照不同的使用者觀點,會有不同的答案

  • 大多數的開發人員會認為Maven是一套「建置工具」(Build tool);顧名思義就是把程式原始碼建置成可以部署的成品
  • 團隊裡的專案經理或是負責部署的工程師,可能會把Maven視為是一套專案管理工具(Project management tool);除了把原始碼建置為成品,還包括了產生報表、建置專案資訊網站…等等有助於團隊運作的進階功能

Maven 為軟體專案提供了統一的建置流程

在Maven問世之前,各個軟體有其獨特的配置方式、建置流程也是五花八門,如果想要執行程式碼分析或是作單元測試,當然也就必須辛苦地在原本已經很高度客製化的流程裡再加上新步驟。Maven 為軟體專案提供了統一的建置流程,即便像是Apache ActiveMQ 這樣知名的開源專案,也只需要一道 mvn install 的指令就可以執行建置

 

Maven 強大的外掛機制

Maven在建置專案時執行的各項功能,舉凡編繹, 單元測試, 產生報表、執行部署都是透過外掛(plugin)所達成的,我們可以依照實際的建置需求在專案中配置各種外掛,如果這些外掛有新版本問世,我們也只需簡單修改外卦配置裡的版本號碼,就可以輕鬆升級

 

配置Maven 專案的核心概念– Convention over configuration (約定優於配置)

Maven本身帶有一些預設的設定,只要遵循這些規範,基本上我們不需要額外作太多設定就可以讓Maven順利運作起來。

  • Maven 預設程式原始碼會放在 ${basedir}/src/main/java 底下
  • 資源文件會放在  ${basedir}/src/main/resources
  • 單元測試的程式碼會放在  ${basedir}/src/test
  • 預設會把編譯過的classes放在 ${basedir}/target/classes 
  • 預設會把專案建置成JAR格式,並放在 ${basedir}/target 底下

當然,如果覺得這些預設的設定不合用,Maven也允許我們作調整

Maven 把軟體專案「模型化」了

Maven的設計理念,是把軟體專案視為一個「模型」(Model),其中的組成「零件」有:

  • 專屬的一組識別名稱,由以下資訊組成
    • Group Id 開發團隊代碼,例如:org.springframework
    • Artifact Id 產品名,例如:spring-core
    • Version 版號,例如:4.3.6.RELEASE
  • 作者
  • 敘述
  • 使用的版權許可
  • 屬性
  • 相依的其它專案

等等相關資訊,都定義在每個專案自己的POM檔裡 (Project Object Model),透過這些資訊,可以延伸出其它更為便捷的特性

  • 相依管理 (Dependency management):因為每個專案都有一組專屬的識別名稱,我們在定義相依性時可以很容易透過這名稱指定到所需的library
  • 軟體專案在不同開發工具之間具有可攜性:Maven制定了軟體專案的統一規格,所以不論是Netbeans, Eclipse, IntelliJ 都可以用一致的方式來開發符合Maven規範的專案
Facebook Comments