版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/zhaobryant/article/details/73609047
本筆記主要記錄關于Maven知識體系的一些Pages和Tips!
一、Maven入門手冊
閱讀内容:
Maven Getting Started Guide和
The Philosophy of Maven以及
The History of Maven該文主要涉及的主要知識點包括:
- 什麼是Maven
- 如何配置Maven項目
- 如何對Maven應用進行編譯/測試/安裝
- 快照(SNAPSHOT)版本簡述
- 如何添加資源檔案以及進行過濾
- 如何使用外部依賴
- 如何将自己的Jar部署到遠端中央倉庫
- 如何建構其他類型的項目
- 如何一次建構多個項目
二、Maven配置
Configuring Maven該文提到Maven的配置分為三個層級:
- Project:項目級,通過pom.xml靜态配置。
- Installation:安裝級,Maven安裝時配置。
- User:使用者級,對于不同的使用者有不同的配置。
項目級配置内容定義了對一個項目所需的基本配置資訊,該配置與環境和使用者無關,而其他的則是對于目前運作環境的配置。
對于項目級配置内容,一般通過pom.xml進行靜态配置。對于使用者級配置内容,一般通過
${user.home}/.m2/settings.xml
進行配置。
三、Maven項目骨架
Introduction to Archetypes該文對archetype的概念進行了解釋,archetype是Maven項目模闆工具包。
An archetype is defined as an original pattern or model from which all other things of the same kind are made.
使用方法:
mvn archetype:generate
Maven中archetype常見類型有:
- maven-archetype-archetype
- maven-archetype-j2ee-simple
- maven-archetype-mojo
- maven-archetype-plugin
- maven-archetype-plugin-site
- maven-archetype-portlet
- maven-archetype-quickstart
- maven-archetype-simple
- maven-archetype-site
- maven-archetype-site-simple
- maven-archetype-webapp
四、Maven項目的标準目錄布局
Introduction to the Standard Directory Layout該文介紹了Maven項目的标準目錄布局。在進行Maven項目開發時,應該遵循該目錄布局進行檔案的建立和使用,具體如下:
${basedir}
|-- pom.xml
|-- src
| |-- main
| | `-- java
| | `-- resources
| | `-- filters
| `-- test
| | `-- java
| | `-- resources
| | `-- filters
| `-- it
| `-- assembly
| `-- site
`-- LICENSE.txt
`-- NOTICE.txt
`-- README.txt
其中,有:
-
項目的源代碼所在的目錄src/main/java
-
項目的資源檔案所在的目錄src/main/resources
-
項目的資源過濾檔案所在的目錄src/main/filters
-
如果是web項目,則該目錄是web應用源代碼所在目錄,如html檔案和web.xml等src/main/webapp
-
測試代碼所在的目錄src/test/java
-
測試相關的資源檔案所在的目錄src/test/resources
-
測試相關的資源過濾檔案所在的目錄src/test/filters
-
內建測試代碼所在的目錄,主要是供别的插件使用的src/it
-
元件(Assembly)描述符所在的目錄src/assembly
-
站點檔案src/site
-
項目的許可檔案LICENSE.txt
-
該項目依賴的庫的注意事項NOTICE.txt
-
項目的readme檔案README.txt
五、POM檔案介紹
Introduction to the POMA Project Object Model or POM is the fundamental unit of work in Maven. It is an XML file that contains information about the project and configuration details used by Maven to build the project.
文中對POM檔案的基本元素進行了簡單的介紹,包括:
- project
- modelVersion
- groupId
- artifactId
- packaging
- version
- name
- url
- description
該文介紹了兩個概念:Super POM 和 Minimal POM
- Super POM
Super POM 是Maven的預設POM。所有的POM都會繼承該Super POM,也就是說,當你建立項目時,你所使用的POM都是繼承了該Super POM的。
其位于
$M2_HOME/lib/maven-model-builder-xxx.jar
的
org/apache/maven/model/pom-4.0.0.xml
中。
- Minimal POM
一個Minimal POM必須包含下面的指定内容:project/modelVersion/groupId/artifactId/version。另外,可以看到,Minimal POM并未強制要求設定
repositories
,因為其繼承了Super POM,在Super POM中定義了預設的
repositories
資訊。
另外,在該文中,個人覺得很重要的一部分就是關于項目間關系的舉例介紹。
- 項目繼承(project inheritance)
項目繼承在各自的子子產品的POM中指定parent資訊。對于如何使用項目繼承,文中給出了兩個例子Example1和Example2(重點了解)。
- 項目聚合(project aggregation)
與項目繼承不同的是,其放棄在子子產品的POM中指定parent資訊,而是在parent POM中指定子產品資訊。如何實作項目聚合?首先,更改parent POM的packaging值為pom;然後,在parent POM中注冊modules資訊。對于具體案例,文中給出了Example3和Example4兩個例子(重點了解)。
- 同時使用項目繼承和項目聚合
Opendaylight中使用該方式進行項目管理。
對于項目關系,總結三條原則:
- 對每一個child POM指定其parent POM
- 改變parent POM的packaging屬性為pom
- 在parent注冊每個子子產品資訊
文中給出了Example5的案例進行參考。
同時,該文介紹了如何在POM檔案中使用變量。
六、Maven倉庫
Introduction to Repositories該文主要對于Maven的倉庫進行了簡要的介紹。對于倉庫的介紹,也可以參考《Maven實戰》的第6章關于倉庫的講解。
七、Maven依賴機制詳解
Introduction to Dependency MechanismDependency management is one of the features of Maven that is best known to users and is one of the areas where Maven excels.
該文主要介紹了Maven的依賴機制,解釋了傳遞性依賴/依賴範圍/依賴管理/系統依賴等内容。着重掌握文中的幾個例子。
另外,《Maven實戰》的第5章對于坐标和依賴的講解也很仔細,可以參照閱讀。
八、小結
Maven的核心内容就是上面的一些知識點,推薦閱讀官網文檔和《Maven實戰》等書籍,結合實踐加深了解。