天天看點

Maven項目管理工具參考知識一、Maven入門手冊二、Maven配置三、Maven項目骨架四、Maven項目的标準目錄布局五、POM檔案介紹六、Maven倉庫七、Maven依賴機制詳解八、小結

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 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

    項目的資源過濾檔案所在的目錄
  • src/main/webapp

    如果是web項目,則該目錄是web應用源代碼所在目錄,如html檔案和web.xml等
  • src/test/java

    測試代碼所在的目錄
  • src/test/resources

    測試相關的資源檔案所在的目錄
  • src/test/filters

    測試相關的資源過濾檔案所在的目錄
  • src/it

    內建測試代碼所在的目錄,主要是供别的插件使用的
  • src/assembly

    元件(Assembly)描述符所在的目錄
  • src/site

    站點檔案
  • LICENSE.txt

    項目的許可檔案
  • NOTICE.txt

    該項目依賴的庫的注意事項
  • README.txt

    項目的readme檔案

五、POM檔案介紹

Introduction to the POM

A 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中使用該方式進行項目管理。

對于項目關系,總結三條原則:

  1. 對每一個child POM指定其parent POM
  2. 改變parent POM的packaging屬性為pom
  3. 在parent注冊每個子子產品資訊

文中給出了Example5的案例進行參考。

同時,該文介紹了如何在POM檔案中使用變量。

六、Maven倉庫

Introduction to Repositories

該文主要對于Maven的倉庫進行了簡要的介紹。對于倉庫的介紹,也可以參考《Maven實戰》的第6章關于倉庫的講解。

七、Maven依賴機制詳解

Introduction to Dependency Mechanism

Dependency 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實戰》等書籍,結合實踐加深了解。