Maven項目對象模型(POM),能夠經過一小段描述信息來管理項目的構建,報告和文檔的項目管理工具軟件。(它是一個強大的Java項目構建工具,基於POM(項目對象模型)文件,可用於項目構建、依賴模塊管理和Javadoc生成等。)html
構建工具是軟件構建過程自動化的一種工具。一個軟件項目的構建一般包含如下幾部分:前端
- 生成源代碼(若是項目使用了自動生成部分源代碼)
- 從源代碼生成文檔(如javadoc)
- 編譯源代碼
- 將編譯好的代碼打包到ZIP包或JAR包中
- 把打包好的文件部署到服務器或存儲庫
某些軟件項目可能還包含其餘特殊構建任務,這些任務均可以添加到maven的構建過程當中自動化執行。java
構建過程自動化的好處是,避免出錯,效率更高,人工執行構建過程比較慢且容易出錯。web
maven根據pom.xml文件中的配置來執行命令。apache
pom.xml文件中包含了依賴項的配置,依賴項是項目使用的第三方庫,即外部的jar文件,若是本地庫沒有,那麼Maven將從中央庫下載依賴項,並存放在本地庫中。服務器
項目的構建一般包含數個相互獨立的任務,能夠獨立執行,如生成文檔,構建jar包等。單個任務的執行過程被稱爲一個構建生命週期,構建生命週期由一系列的構建階段組成,每一個階段包含一系列的構建目標。app
插件是構建目標的集合,也稱爲MOJO (Maven Old Java Object)。框架
能夠構建項目的不一樣版本。webapp
POM( Project Object Model,項目對象模型 ) 是 Maven 工程的基本工做單元,是一個XML文件,包含了項目的基本信息,用於描述項目如何構建,聲明項目依賴,等等。
執行任務或目標時,Maven 會在當前目錄中查找 POM。它讀取 POM,獲取所需的配置信息,而後執行目標。
POM 中能夠指定如下配置:
節點 | 描述 |
---|---|
project | 工程的根標籤 |
modelVersion | 指定模型版本,應爲4.0 |
groupld | 這是工程組的標識。它在一個組織或者項目中一般是惟一的。 |
artifactld | 這是工程的標識。它一般是工程的名稱。 |
version | 這是工程的版本號。 |
父(Super)POM是 Maven 默認的 POM。全部的 POM 都繼承自一個父 POM(不管是否顯式定義了這個父 POM)。父 POM 包含了一些能夠被繼承的默認設置。
<parent> <groupId></groupId> <artifactId></artifactId> <version></version> <relativePath></relativePath> </parent>
可用上述結構顯式地繼承另外一個POM文件。
Maven Repository/存儲庫,顧名思義是一個存儲JAR文件的倉庫,Maven根據項目中pom.xml文件中提供的jar包依賴信息,從存儲庫中查找並獲取須要的jar包。
Maven Repository有3種類型:
- Local Repository – 本地庫
- Central Repository – 中央庫
- Remote Repository – 遠程庫
Maven搜索依賴項時,會按照:本地庫、中央庫和遠程庫的順序進行。
本地庫能夠經過修改settings.xml(apache-maven-3.6.3\conf\)文件來更改maven本地存儲庫的位置。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>D:\Java\maven-repository</localRepository> <!-- localRepository
localRepository 後方是咱們想要修改地本地庫存儲的位置。
|--name |--pom.xml Project Object Model 項目對象模型,Maven 的核心配置文件,與構建過程相關的一切設置都在這個文件中進行配置。 |--src |--main 存放主程序 |--java 存放java源文件 |--resources 存放框架或其餘工具的配置文件 |--webapp 存放關於網頁的數據 |--index.jsp 默認訪問 |--static |--default 存放前端要用的框架,圖片,css,js等文件 |--WEB-INF |--web.xml 配置文件 |--page 存放前端頁面,每一個板塊各爲一個文件夾 |--test 存放測試程序 |--java 存放測試java源文件 |--resources 存放測試框架或其餘工具的配置文件