maven(二) maven簡介

Maven功能

  • 構建
  • 文檔生成
  • 報告
  • 依賴
  • SCMs
  • 發佈
  • 分發
  • 郵件列表

約定配置

Maven 提倡使用一個共同的標準目錄結構,Maven 使用約定優於配置的原則,大家儘可能的遵守這樣的目錄結構。如下所示:

目錄 目的
${basedir} 存放pom.xml和所有的子目錄
${basedir}/src/main/java 項目的java源代碼
${basedir}/src/main/resources 項目的資源,比如說property文件,springmvc.xml
${basedir}/src/test/java 項目的測試類,比如說Junit代碼
${basedir}/src/test/resources 測試用的資源
${basedir}/src/main/webapp/WEB-INF web應用文件目錄,web項目的信息,比如存放web.xml、本地圖片、jsp視圖頁面
${basedir}/target 打包輸出目錄
${basedir}/target/classes 編譯輸出目錄
${basedir}/target/test-classes 測試編譯輸出目錄
Test.java Maven只會自動運行符合該命名規則的測試類
~/.m2/repository Maven默認的本地倉庫目錄位置

 Maven 特點

  • 項目設置遵循統一的規則。

  • 任意工程中共享。

  • 依賴管理包括自動更新。

  • 一個龐大且不斷增長的庫。

  • 可擴展,能夠輕鬆編寫 Java 或腳本語言的插件。

  • 只需很少或不需要額外配置即可即時訪問新功能。

  • 基於模型的構建 − Maven能夠將任意數量的項目構建到預定義的輸出類型中,如 JAR,WAR 或基於項目元數據的分發,而不需要在大多數情況下執行任何腳本。

  • 項目信息的一致性站點 − 使用與構建過程相同的元數據,Maven 能夠生成一個網站或PDF,包括您要添加的任何文檔,並添加到關於項目開發狀態的標準報告中。

  • 發佈管理和發佈單獨的輸出 − Maven 將不需要額外的配置,就可以與源代碼管理系統(如 Subversion 或 Git)集成,並可以基於某個標籤管理項目的發佈。它也可以將其發佈到分發位置供其他項目使用。Maven 能夠發佈單獨的輸出,如 JAR,包含其他依賴和文檔的歸檔,或者作爲源代碼發佈。

  • 向後兼容性 − 您可以很輕鬆的從舊版本 Maven 的多個模塊移植到 Maven 3 中。

  • 子項目使用父項目依賴時,正常情況子項目應該繼承父項目依賴,無需使用版本號,

  • 並行構建 − 編譯的速度能普遍提高20 - 50 %。

  • 更好的錯誤報告 − Maven 改進了錯誤報告,它爲您提供了 Maven wiki 頁面的鏈接,您可以點擊鏈接查看錯誤的完整描述。

Maven 的 Snapshot 版本與 Release 版本

1、Snapshot 版本代表不穩定、尚處於開發中的版本。

2、Release 版本則代表穩定的版本。

3、什麼情況下該用 SNAPSHOT?

協同開發時,如果 A 依賴構件 B,由於 B 會更新,B 應該使用 SNAPSHOT 來標識自己。這種做法的必要性可以反證如下:

  • a. 如果 B 不用 SNAPSHOT,而是每次更新後都使用一個穩定的版本,那版本號就會升得太快,每天一升甚至每個小時一升,這就是對版本號的濫用。
  • b.如果 B 不用 SNAPSHOT, 但一直使用一個單一的 Release 版本號,那當 B 更新後,A 可能並不會接受到更新。因爲 A 所使用的 repository 一般不會頻繁更新 release 版本的緩存(即本地 repository),所以B以不換版本號的方式更新後,A在拿B時發現本地已有這個版本,就不會去遠程Repository下載最新的 B

4、 不用 Release 版本,在所有地方都用 SNAPSHOT 版本行不行?     

不行。正式環境中不得使用 snapshot 版本的庫。 比如說,今天你依賴某個 snapshot 版本的第三方庫成功構建了自己的應用,明天再構建時可能就會失敗,因爲今晚第三方可能已經更新了它的 snapshot 庫。你再次構建時,Maven 會去遠程 repository 下載 snapshot 的最新版本,你構建時用的庫就是新的 jar 文件了,這時正確性就很難保證了。

發佈了55 篇原創文章 · 獲贊 10 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章