- 輕量級Java EE企業應用開發實戰
- 柳偉衛編著
- 656字
- 2022-07-29 14:31:15
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)的核心理念。
- Objective-C Memory Management Essentials
- Visual C++程序設計學習筆記
- 零基礎學C++程序設計
- 自制編譯器
- Docker技術入門與實戰(第3版)
- JavaScript修煉之道
- Learning AWS Lumberyard Game Development
- Java性能權威指南(第2版)
- 數據結構案例教程(C/C++版)
- Angular開發入門與實戰
- Django Design Patterns and Best Practices
- HTML5移動前端開發基礎與實戰(微課版)
- TypeScript全棧開發
- 用Python動手學統計學
- AngularJS UI Development