讀古今文學網 > Maven實戰 > 2.3.1 M2_HOME >

2.3.1 M2_HOME

前面講到設置M2_HOME環境變量指向Maven的安裝目錄,本書之後所有使用M2_HOME的地方都指代了該安裝目錄。下面看一下該目錄的結構和內容:

·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。

·boot:該目錄只包含一個文件,以maven 3.0為例,該文件為plexus-classworlds-2.2.3.jar。plexus-classworlds是一個類加載器框架,相對於默認的java類加載器,它提供了更豐富的語法以方便配置,Maven使用該框架加載自己的類庫。更多關於classworlds的信息請參考http://classworlds.codehaus.org/。對於一般的Maven用戶來說,不必關心該文件。

·conf:該目錄包含了一個非常重要的文件settings.xml。直接修改該文件,就能在機器上全局地定制Maven的行為。一般情況下,我們更偏向於複製該文件至~/.m2/目錄下(~表示用戶目錄),然後修改該文件,在用戶範圍定制Maven的行為。後面將會多次提到settings.xml,並逐步分析其中的各個元素。

·lib:該目錄包含了所有Maven運行時需要的Java類庫,Maven本身是分模塊開發的,因此用戶能看到諸如maven-core-3.0.jar、maven-model-3.0.jar之類的文件。此外,這裡還包含一些Maven用到的第三方依賴,如common-cli-1.2.jar、google-collection-1.0.jar等。對於Maven 2來說,該目錄只包含一個如maven-2.2.1-uber.jar的文件,原本各為獨立JAR文件的Maven模塊和第三方類庫都被拆解後重新合併到了這個JAR文件中。可以說,lib目錄就是真正的Maven。關於該文件,還有一點值得一提的是,用戶可以在這個目錄中找到Maven內置的超級POM,這一點在8.5節詳細解釋。其他:LICENSE.txt記錄了Maven使用的軟件許可證Apache License Version 2.0;NOTICE.txt記錄了Maven包含的第三方軟件;而README.txt則包含了Maven的簡要介紹,包括安裝需求及如何安裝的簡要指令等。