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 的簡要介紹,包括安裝需求及如何安裝的簡要指令等。