Maven

Apache Maven是一個軟件項目管理和綜合工具。基於項目對象模型(pom)的概念,Maven能夠從一箇中心資料片管理項目構建,報告文件。html

 

Maven是什麼?web

Maven是一個項目管理和綜合工具。Maven提供了開發人員構建一個完整的生命週期框架。開發團隊能夠自動完成項目的基本建設,Maven使用標準的目錄結構和默認構建生命週期。數據庫

在多個開發團隊環境時,Maven能夠設置按標準在很是短的時間裏完成配置工做。因爲大部分項目的設置都很簡單,而且可重複使用,Maven讓開發人員的工做更輕鬆,同時建立報表,檢查,構建和測試自動化設置。apache

 

Maven歷史tomcat

Maven最初設計,是以簡化Jakarta Turbine項目的建設。在幾個項目,每一個項目包含了不一樣的Ant構建文件。 JAR檢查到CVS。服務器

Apache組織開發Maven能夠創建多個項目,發佈項目信息,項目部署,在幾個項目中JAR文件提供團隊合做和幫助。框架

 

Maven目標yii

Maven的主要目標是讓開發人員在最短的時間內理解開發工做的完整狀態。爲了實現這一目標,Maven試圖處理如下幾個方面的問題:maven

  • 使構建過程變得簡單
  • 提供統一的構建系統
  • 提供優質的項目信息
  • 提供最佳實踐開發指南
  • 容許透明遷移到新功能
  • 項目是可重複使用,易維護,更容易理解的一個綜合模型

提供優質的項目信息

Maven提供了大量有用的項目信息,這些信息部分來自您的POM,部分來自您項目的來源。例如,Maven能夠提供:工具

  • 更改直接從源代碼管理建立的日誌文檔
  • 交叉引用的來源
  • 項目管理的郵件列表列表
  • 依賴列表
  • 單元測試報告包括報道

Maven的主要特色

  • 遵循最佳實踐的簡單項目設置 - 在幾秒鐘內啓動新項目或模塊
  • 全部項目的一導致用 - 意味着新開發人員進入項目的時間不會增長
  • 高級依賴管理,包括自動更新,依賴關閉(也稱爲傳遞依賴)
  • 可以輕鬆地同時處理多個項目
  • 一個龐大且不斷增加的庫和元數據庫,能夠當即使用,並與最大的開源項目安排實時可用的最新版本
  • 可擴展,可以輕鬆編寫 Java或腳本語言的插件
  • 只需不多或不須要額外配置便可即時訪問新功能
  • 用於在Maven以外進行依賴關係管理和部署的Ant任務
  • 基於模型的構建:Maven可以根據項目的元數據將任意數量的項目構建到預約義的輸出類型(如JAR,WAR或分發)中,而無需在大多數狀況下執行任何腳本編寫。
  • 項目信息的連貫性站點:使用與構建過程相同的元數據,Maven可以生成包含您須要添加的任何文檔的網站或PDF,並添加有關項目開發狀態的標準報告。在「項目信息」和「項目報告」子菜單下,能夠在本網站左側導航欄的底部看到此信息的示例。
  • 發佈管理和發佈發佈:沒有太多額外配置,Maven將與您的源代碼控制系統(如Subversion或Git)集成,並根據特定標記管理項目的發佈。它還能夠將其發佈到分發位置以供其餘項目使用。Maven可以發佈單個輸出,例如JAR,包含其餘依賴關係和文檔的存檔,或者做爲源分發。
  • 依賴管理:Maven鼓勵使用JAR和其餘依賴項的中央存儲庫。Maven附帶了一種機制,您的項目客戶可使用該機制從中央JAR存儲庫下載構建項目所需的任何JAR,就像Perl的CPAN同樣。這容許Maven的用戶跨項目重用JAR並鼓勵項目之間的通訊,以確保處理向後兼容性問題。

什麼是pom?

POM表明「項目對象模型」。它是一個名爲pom.xml的文件中的Maven項目的XML表示形式在Maven人的面前,談論一個項目是在哲學意義上講,而不只僅是包含代碼的文件集合。項目包含配置文件,涉及的開發人員及其所扮演的角色,缺陷跟蹤系統,組織和許可證,項目所在的URL,項目的依賴關係以及全部其餘小部分發揮代碼生命。這是項目全部事情的一站式商店。事實上,在Maven世界中,一個項目根本不須要包含任何代碼,只須要一個pom.xml

  • groupId:這在組織或項目中一般是惟一的。例如,全部核心Maven工件(好吧,應該)都存在於groupId org.apache.maven下組ID不必定使用點表示法,例如junit項目。請注意,帶點標記的groupId沒必要與項目包含的包​​結構相對應。然而,這是一個很好的作法。當存儲在存儲庫中時,該組的行爲很像操做系統中的Java打包結構。這些點由OS特定的目錄分隔符(例如Unix中的「/」)替換,後者成爲基本存儲庫的相對目錄結構。在給出的示例中,org.codehaus.mojo組位於目錄中$ M2_REPO / org / codehaus / mojo
  • artifactId:artifactId一般是項目所知的名稱。雖然groupId很重要,可是組內的人不多會在討論中提到groupId(它們一般都是相同的ID,例如MojoHaus項目groupId:org.codehaus.mojo)。它與groupId一塊兒建立了一個鍵,將該項目與世界上的其餘項目分開(至少應該:))。與groupId一塊兒,artifactId徹底定義了工件庫中的工件生命區。對於上述項目,my-project位於$ M2_REPO / org / codehaus / mojo / my-project中
  • version:這是命名難題的最後一部分。groupId:artifactId表示單個項目,但它們沒法描述咱們正在討論的項目的哪一個版本。咱們是否須要junit: 2018年(版本4.12)或2007版(版本3.8.2)?簡而言之:代碼更改,應該對這些更改進行版本控制,而且此元素使這些版本保持一致。它還在工件的存儲庫中用於將版本彼此分開。個人項目版本1.0文件存在於目錄結構$ M2_REPO / org / codehaus / mojo / my-project / 1.0中

 

 

Maven基本操做

一些基本的操做,編譯,構建,單元測試,安裝,網站生成和基於Maven部署項目。

相關文章
相關標籤/搜索