本篇知識來源于大佬博客以及菜鳥教程。
1.簡介
Maven項目對象模型(POM),可以通過一小段描述信息來管理項目的構(gòu)建,報告和文檔的項目管理工具軟件。(它是一個強大的Java項目構(gòu)建工具,基于POM(項目對象模型)文件,可用于項目構(gòu)建、依賴模塊管理和Javadoc生成等。)
2.構(gòu)建工具
構(gòu)建工具是軟件構(gòu)建過程自動化的一種工具。一個軟件項目的構(gòu)建通常包含以下幾部分:
- 生成源代碼(如果項目使用了自動生成部分源代碼)
- 從源代碼生成文檔(如javadoc)
- 編譯源代碼
- 將編譯好的代碼打包到ZIP包或JAR包中
- 把打包好的文件部署到服務器或存儲庫
某些軟件項目可能還包含其他特殊構(gòu)建任務,這些任務都可以添加到maven的構(gòu)建過程中自動化執(zhí)行。
構(gòu)建過程自動化的好處是,避免出錯,效率更高,人工執(zhí)行構(gòu)建過程比較慢且容易出錯。
3.工作原理
3.1 Maven 讀取 pom.xml
maven根據(jù)pom.xml文件中的配置來執(zhí)行命令。
3.2 下載依賴jar包到本地庫(Repository)
pom.xml文件中包含了依賴項的配置,依賴項是項目使用的第三方庫,即外部的jar文件,如果本地庫沒有,那么Maven將從中央庫下載依賴項,并存放在本地庫中。
3.3 執(zhí)行構(gòu)建過程/階段/目標
項目的構(gòu)建通常包含數(shù)個相互獨立的任務,可以獨立執(zhí)行,如生成文檔,構(gòu)建jar包等。單個任務的執(zhí)行過程被稱為一個構(gòu)建生命周期,構(gòu)建生命周期由一系列的構(gòu)建階段組成,每個階段包含一系列的構(gòu)建目標。
3.4 執(zhí)行插件
插件是構(gòu)建目標的集合,也稱為MOJO (Maven Old Java Object)。
Maven 生命周期的每一個階段的具體實現(xiàn)都是由 Maven 插件實現(xiàn)的。
Maven 實際上是一個依賴插件執(zhí)行的框架,每個任務實際上是由插件完成。Maven 插件通常被用來:
- 創(chuàng)建 jar 文件
- 創(chuàng)建 war 文件
- 編譯代碼文件
- 代碼單元測試
- 創(chuàng)建工程文檔
- 創(chuàng)建工程報告
3.5 構(gòu)建profile
可以構(gòu)建項目的不同版本。
4.POM
4.1 概念
POM( Project Object Model,項目對象模型 ) 是 Maven 工程的基本工作單元,是一個XML文件,包含了項目的基本信息,用于描述項目如何構(gòu)建,聲明項目依賴,等等。
執(zhí)行任務或目標時,Maven 會在當前目錄中查找 POM。它讀取 POM,獲取所需的配置信息,然后執(zhí)行目標。
POM 中可以指定以下配置:
- 項目依賴
- 插件
- 執(zhí)行目標
- 項目構(gòu)建 profile
- 項目版本
- 項目開發(fā)者列表
- 相關郵件列表信息
4.2 標簽
節(jié)點 |
描述 |
project |
工程的根標簽 |
modelVersion |
指定模型版本,應為4.0 |
groupld |
這是工程組的標識。它在一個組織或者項目中通常是唯一的。 |
artifactld |
這是工程的標識。它通常是工程的名稱。 |
version |
這是工程的版本號。 |
4.3 pom繼承
父(Super)POM是 Maven 默認的 POM。所有的 POM 都繼承自一個父 POM(無論是否顯式定義了這個父 POM)。父 POM 包含了一些可以被繼承的默認設置。因此,當 Maven 發(fā)現(xiàn)需要下載 POM 中的 依賴時,它會到 Super POM 中配置的默認倉庫 http://repo1./maven2 去下載。
<parent>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<relativePath></relativePath>
</parent>
可用上述結(jié)構(gòu)顯式地繼承另一個POM文件。
5.存儲庫
-
在 Maven 的術(shù)語中,倉庫是一個位置(place)。
Maven 倉庫是項目中依賴的第三方庫,這個庫所在的位置叫做倉庫。
在 Maven 中,任何一個依賴、插件或者項目構(gòu)建的輸出,都可以稱之為構(gòu)件。
Maven 倉庫能幫助我們管理構(gòu)件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。
Maven 倉庫有三種類型:
- 本地(local)
- 中央(central)
- 遠程(remote)
Maven搜索依賴項時,會按照:本地庫、中央庫和遠程庫的順序進行。
本地庫可以通過修改settings.xml(apache-maven-3.6.3\conf\)文件來更改maven本地存儲庫的位置。
<settings xmlns="http://maven./SETTINGS/1.0.0"
xmlns:xsi="http://www./2001/XMLSchema-instance"
xsi:schemaLocation="http://maven./SETTINGS/1.0.0 http://maven./xsd/settings-1.0.0.xsd">
<localRepository>D:\Java\maven-repository</localRepository>
<!-- localRepository
localRepository 后方是我們想要修改地本地庫存儲的位置。
6.項目結(jié)構(gòu)
|--name
?|--pom.xml Project Object Model 項目對象模型,Maven 的核心配置文件,與構(gòu)建過程相關的一切設置都在這個文件中進行配置。
?|--src
?|--main 存放主程序
?|--java存放java源文件
?|--resources 存放框架或其他工具的配置文件
?|--webapp存放關于網(wǎng)頁的數(shù)據(jù)
?|--index.jsp默認訪問
?|--static
?|--default存放前端要用的框架,圖片,css,js等文件
?|--WEB-INF
?|--web.xml配置文件
?|--page存放前端頁面,每個板塊各為一個文件夾
?|--test存放測試程序
?|--java存放測試java源文件
?|--resources 存放測試框架或其他工具的配置文件
|