1. 程式人生 > 實用技巧 >maven目錄結構分析

maven目錄結構分析

在這裡插入圖片描述

1,bin

在這裡插入圖片描述

該目錄包含了 mvn 執行的指令碼,這些指令碼用來配置 Java 命令,準備好 classpath 和相關的 Java 系統屬性,然後執行 Java 命令。

其中 mvn 是基於 UNIX 平臺的 shell 指令碼,mvn.bat 是基於 Windows 平臺的 bat 指令碼。在命令列輸入任何一條 mvn 命令時,實際上就是在呼叫這些指令碼。

該目錄還包含了 mvnDebug 和 mvnDebug.bat 兩個檔案,同樣,前者是 UNIX 平臺的 shell 指令碼,後者是 Windows 平臺的 bat 指令碼。那麼 mvn 和 mvnDebug 有什麼區別和關係呢?

開啟檔案我們就可以看到,兩者基本是一樣的,只是 mvnDebug 多了一條 MAVEN_DEBUG_OPTS 配置,其作用就是在執行 Maven 時開啟 debug,以便除錯 Maven 本身。

此外,該目錄還包含 m2.conf 檔案,這是 classworlds 的配置檔案,後面會介紹 classworlds。

2,boot

在這裡插入圖片描述

該目錄只包含一個檔案,以 maven 3.3.9 為例,該檔案為 plexus-classworlds-2.5.2.jar。

plexus-classworlds 是一個類載入器框架,相對於預設的 java 類載入器,它提供了更豐富的語法以方便配置,Maven 使用該框架載入自己的類庫。

3,conf

在這裡插入圖片描述

該目錄包含了一個非常重要的檔案 settings.xml。直接修改該檔案,就能在機器上全域性地定製 Maven 的行為。

一般情況下,我們更偏向於複製該檔案至 ~/.m2/ 目錄下(~表示使用者目錄),然後修改該檔案,在使用者範圍定製 Maven 的行為。後面將會多次提到 settings.xml,並逐步分析其中的各個元素。

4,lib

在這裡插入圖片描述

該目錄包含了所有 Maven 執行時需要的 Java 類庫,Maven 本身是分模組開發的,因此使用者能看到諸如 maven-core-3.0.jar、maven-model-3.0.jar 之類的檔案。

此外,這裡還包含一些 Maven 用到的第三方依賴,如 common-cli-1.2.jar、commons-lang-2.6.jar 等。

對於 Maven 2 來說,該目錄只包含一個如 maven-2.2.1-uber.jar 的檔案,原本各為獨立 JAR 檔案的 Maven 模組和第三方類庫都被拆解後重新合併到了這個 JAR 檔案中。可以說,lib 目錄就是真正的 Maven。

關於該檔案,還有一點值得一提的是,使用者可以在這個目錄中找到 Maven 內建的超級 POM,這一點教程後面會詳細解釋。

5,LICENSE

記錄了 Maven 使用的軟體許可證Apache License Version 2.0。

6,NOTICE

記錄了 Maven 包含的第三方軟體。

7,README.TXT

包含了 Maven 的簡要介紹,包括安裝需求及如何安裝的簡要指令等。