POM代表項目對象模型。這是Maven的核心概念。
POM文件使用XML格式來聲明項目資源(如依賴項)。
依賴關(guān)系是在項目中用作庫的JAR文件。
位于項目根目錄中的pom.xml包含對所有這些資源的引用。
由于 maven 在配置上是約定的,大多數(shù)情況下,我們只需要聲明工件的名稱,所以我們不需要指定Maven找到資源的絕對或相對路徑。Maven使用默認(rèn)目錄/文件夾布局。所有mavenized項目使用相同的目錄/文件夾來組織其源文件,資源文件。
Maven在以下步驟中使用pom.xml文件。
mvn 編譯
將執(zhí)行編譯Maven POM文件(項目對象模型)pom.xml是描述項目資源的XML文件。
每個項目都有一個POM文件。POM文件名為pom.xml
,應(yīng)位于項目的根目錄中。
pom.xml有關(guān)于項目和各種配置的聲明。
pom.xml文件也有目標(biāo)和插件。
POM文件描述了什么構(gòu)建,但不是如何構(gòu)建它。如何構(gòu)建它取決于Maven構(gòu)建階段和目標(biāo)。
我們可以將自定義操作(目標(biāo))添加到Maven構(gòu)建階段。
下表列出了可在POM中指定的一些配置。
項目 | 描述 |
---|---|
項目依賴 | 庫JAR文件 |
plugins | 需要擴(kuò)展 |
構(gòu)建配置文件 | 項目的自定義設(shè)置 |
項目版本 | 項目的版本號。 如果pom.xml用于庫,則版本號為用作庫版本號。 |
developers | 為構(gòu)建軟件的開發(fā)人員提供信息 |
郵件列表 | 電子郵件地址 |
一個項目分為子項目通常有一個用于父項目的POM文件,和每個子項目的一個POM文件。
通過使用這種結(jié)構(gòu),我們可以在一個步驟中構(gòu)建整個項目,或者如果需要,我們可以單獨(dú)構(gòu)建子項目。
這里是一個最小的POM文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>groupID</groupId> <artifactId>artifactId</artifactId> <version>1.0.0</version> </project>
在創(chuàng)建POM之前,我們應(yīng)該決定項目組( groupId
),項目名稱( artifactId
)及其版本( version
)。
這些屬性幫助我們在存儲庫中唯一標(biāo)識項目。
在下面的代碼中,我們填寫groupId,它是項目組名稱,artifactId是項目名稱,以及項目版本。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.companyname.project-group</groupId> <artifactId>feeCalculation</artifactId> <version>1.0</version> </project>
所有POM文件都需要項目XML元素和三個必填字段: groupId
, artifactId
,版本
。
存儲庫中的項目符號是 groupId:artifactId:version
。
modelVersion
元素設(shè)置POM模型的版本。它必須匹配您使用的Maven版本。版本4.0.0匹配Maven版本2和3。
groupId
元素是唯一的ID組織或項目。
通常我們使用類似于項目的根Java包名稱的組ID。
該項目將位于Maven倉庫下與組ID匹配的目錄結(jié)構(gòu)。
每個。
替換為目錄分隔符,并且每個詞因此表示目錄。
然后,組ID com.yourCompany
將位于目錄中調(diào)用 MAVEN_REPO / com / yourCompany
。
MAVEN_REPO是Maven存儲庫的目錄路徑。
artifactId
元素包含項目的名稱。
工件ID用作組ID下的子目錄的名稱目錄,并且作為JAR文件名稱的一部分在建設(shè)項目時產(chǎn)生。
構(gòu)建結(jié)果,一個JAR,WAR或EAR文件,在Maven中被稱為工件。
versionId
元素包含項目的版本號。
項目的用戶可以通過使用來引用項目的特定版本 versionId
元素中的版本號。
版本號用作工件ID目錄下的子目錄的名稱。并作為構(gòu)建的工件的名稱的一部分。
版本號用作工件ID目錄下的子目錄的名稱。并作為構(gòu)建的工件的名稱的一部分。...
MAVEN_REPO / com / companyname / project-group / feeCalculation / 1.0.0 / feeCalculation-1.0.0.jar
如果你的項目使用Maven目錄結(jié)構(gòu),而你的項目沒有外部依賴,那么上述最小的POM文件就是你需要的構(gòu)建您的項目。
如果你的項目使用Maven目錄結(jié)構(gòu),而你的項目沒有外部依賴,那么上述最小的POM文件就是你需要的構(gòu)建您的項目。...
此基本POM稱為超級POM,并且包含默認(rèn)情況下繼承的值。
此基本POM稱為超級POM,并且包含默認(rèn)情況下繼承的值。...
如果未指定超級POM,則POM文件從基本POM繼承。
如果未指定超級POM,則POM文件從基本POM繼承。...
Base POM | +---POM | | +---POM | | | +---POM | | | +---POM | | | +---POM | | +---POM
我們可以在POM文件中顯式設(shè)置一個超級POM文件來改變所有繼承POM的設(shè)置通過其共同的超級POM。
我們可以在POM文件中顯式設(shè)置一個超級POM文件來改變所有繼承POM的設(shè)置通過其共同的超級POM。...
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.oneproject.fee</groupId> <artifactId>my-parent</artifactId> <version>2.0</version> <relativePath>../my-parent</relativePath> </parent> <artifactId>my-project</artifactId> ... </project>
繼承的POM文件可以覆蓋設(shè)置通過在繼承的POM文件中指定新設(shè)置從超級POM。
Maven使用超級pom加項目配置的有效pom執(zhí)行相關(guān)目標(biāo)。
我們可以看看超級POM的默認(rèn)配置通過運(yùn)行以下命令:
mvn help:effective-pom
更多建議: