官术网_书友最值得收藏!

2.3 理解POM

POM(Project Object Model,項目對象模型)是Maven中的基本工作單元。POM是一個XML文件,其中包含有關項目的信息以及Maven用于構建項目的詳細配置信息。它包含大多數項目的默認值。比如在hello-world項目例子中,項目根目錄下的pom.xml就是一個POM文件。當執行任務或目標時,Maven會在當前目錄中查找POM文件,并讀取POM文件,以獲取所需的配置信息,然后執行目標。

可以在POM中指定的一些項目依賴項、插件或目標、構建配置文件等,也可以指定其他信息,例如項目版本、項目描述、開發人員姓名、郵件列表等。

2.3.1 Super POM

Super POM是Maven的默認POM。除非明確設置,否則所有POM都會擴展為Super POM,這意味著Super POM中指定的配置將由開發者自己創建的項目POM繼承。Super POM位于Maven安裝目錄的/lib/maven-model-builder-x.x.x.jar文件中,解壓該JAR文件可以在路徑org/apache/maven/model/下看到一個pom-4.0.0.xml文件,該pom-4.0.0.xml文件就是Super POM。下面的代碼片段是Super POM的核心內容。

從上述配置文件我們能夠理解為什么hello-world項目的main目錄下就是平時開發的功能代碼,而test下則放置的是測試代碼。

2.3.2 最小化POM

POM的最低要求如下:

  • project
  • modelVersion
  • groupId
  • artifactId
  • version

以下是一個例子:

一個POM要求配置其groupId、artifactId和version,這3個值構成項目的完全限定工件名稱,即<groupId>:<artifactId>:<version>的形式。對于上面的示例,其完全限定的工件名稱為“com.waylau.java:hello-world:1.0-SNAPSHOT”。

若POM未指定詳細配置信息,則Maven將使用其默認值。這些默認值之一是包裝類型,每個Maven項目都有包裝類型,如果未在POM中指定,那么將使用默認值jar。

此外,可以看到在最小POM中未指定存儲庫。如果使用最小的POM構建項目,那么它將繼承Super POM中的存儲庫配置。因此,當Maven在最小POM中看到依賴項時,它將知道這些依賴項將從Super POM中指定的https://repo.maven.apache.org/maven2下載。這也體現出了Maven提倡的“約定優于配置”(Convention Over Configuration)的核心理念。

主站蜘蛛池模板: 遵义市| 长岛县| 祁门县| 柯坪县| 沿河| 喀什市| 陆河县| 济南市| 密云县| 贵州省| 读书| 桐梓县| 宝清县| 邮箱| 远安县| 甘南县| 额敏县| 郓城县| 临高县| 肇东市| 邹城市| 白银市| 庐江县| 秭归县| 潮安县| 信阳市| 天水市| 拜城县| 乌拉特前旗| 安顺市| 庆阳市| 霍林郭勒市| 忻州市| 灯塔市| 环江| 察哈| 元氏县| 巴林左旗| 永新县| 项城市| 阳谷县|