1. 程式人生 > >maven學習(一)——maven的安裝目錄結構

maven學習(一)——maven的安裝目錄結構

1、maven的安裝目錄

        如果忘記了maven的安裝目錄,可以使用“mvn -version”命令來檢視,其中包括maven的版本資訊、安裝目錄等各種資訊。

localhost:~ guolujie$ mvn -version
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /Users/guolujie/tool/maven/apache-maven-3.5.4
Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.13.4", arch: "x86_64", family: "mac"

2、maven的目錄結構

        根據以上文字所顯示的maven的安裝路徑,我們進入到該路徑下,可以看到如下的結構:

localhost:apache-maven-3.5.4 guolujie$ ls -l
total 64
[email protected]  1 guolujie  staff  20965  8 11 19:23 LICENSE
[email protected]  1 guolujie  staff    182  8 11 19:23 NOTICE
[email protected]  1 guolujie  staff   2530  8 11 19:23 README.txt
[email protected]
8 guolujie staff 256 8 11 19:23 bin [email protected] 3 guolujie staff 96 8 11 19:23 boot [email protected] 6 guolujie staff 192 8 21 11:12 conf [email protected] 83 guolujie staff 2656 8 11 19:23 lib

        如上結構中,包含bin、boot、conf、lib這四個資料夾,下面分別介紹各個資料夾的作用是什麼。

        * bin目錄

localhost:bin guolujie$ ls -l
total 64
[email protected] 1 guolujie  staff   228  8 11 19:23 m2.conf
[email protected] 1 guolujie  staff  5741  8 11 19:23 mvn
[email protected] 1 guolujie  staff  6343  8 11 19:23 mvn.cmd
[email protected] 1 guolujie  staff  1485  8 11 19:23 mvnDebug
[email protected] 1 guolujie  staff  1668  8 11 19:23 mvnDebug.cmd
[email protected] 1 guolujie  staff  1532  8 11 19:23 mvnyjp

        該資料夾的作用和Java中的bin作用相似,包含了該軟體的執行指令碼,在命令列中每輸入一條mvn命令,實際上都是在呼叫mvn指令碼。mvnDebug其作用是在執行Maven時開啟debug,以便於對maven本身進行除錯。m2.conf檔案是classworlds的配置檔案,boot目錄中有一個plexus-classworlds-2.5.2.jar包,該包是類似於Java的一個類載入器的框架,用於載入maven自身的類,而classworlds則包含了對該包的配置,具體內容如下所示:

localhost:bin guolujie$ cat m2.conf 
main is org.apache.maven.cli.MavenCli from plexus.core

set maven.conf default ${maven.home}/conf

[plexus.core]
load       ${maven.conf}/logging
optionally ${maven.home}/lib/ext/*.jar
load       ${maven.home}/lib/*.jar

        * boot目錄:

        boot目錄中只包含上面提到的 plexus-classworlds-2.5.2.jar包,該包是一個類載入器的框架,用來載入maven本身的類。

        * conf目錄:

localhost:conf guolujie$ ls -l
total 40
[email protected] 3 guolujie  staff     96  8 11 19:23 logging
[email protected] 1 guolujie  staff   1867  8 21 11:34 settings.xml
[email protected] 1 guolujie  staff  10211  8 11 22:50 settings.xml.back
[email protected] 1 guolujie  staff   3645  8 11 19:23 toolchains.xml

         conf目錄中包含了一個非常重要的settings.xml配置檔案,以後的很多配置都會在該檔案中進行配置。該檔案可以直接修改,直接修改該檔案就是在全域性上定製該檔案。

        * lib目錄:

        該目錄中包含了maven執行時所需要的類.

localhost:lib guolujie$ ls
aopalliance-1.0.jar                      maven-embedder-3.5.4.jar                 maven-settings.license
cdi-api-1.0.jar                          maven-embedder.license                   maven-shared-utils-3.2.1.jar
cdi-api.license                          maven-model-3.5.4.jar                    maven-shared-utils.license
commons-cli-1.4.jar                      maven-model-builder-3.5.4.jar            maven-slf4j-provider-3.5.4.jar
commons-cli.license                      maven-model-builder.license              maven-slf4j-provider.license
commons-io-2.5.jar                       maven-model.license                      org.eclipse.sisu.inject-0.3.3.jar
commons-io.license                       maven-plugin-api-3.5.4.jar               org.eclipse.sisu.inject.license
commons-lang3-3.5.jar                    maven-plugin-api.license                 org.eclipse.sisu.plexus-0.3.3.jar
commons-lang3.license                    maven-repository-metadata-3.5.4.jar      org.eclipse.sisu.plexus.license
ext                                      maven-repository-metadata.license        plexus-cipher-1.7.jar
guava-20.0.jar                           maven-resolver-api-1.1.1.jar             plexus-cipher.license
guice-4.2.0-no_aop.jar                   maven-resolver-api.license               plexus-component-annotations-1.7.1.jar
jansi-1.17.1.jar                         maven-resolver-connector-basic-1.1.1.jar plexus-component-annotations.license
jansi-native                             maven-resolver-connector-basic.license   plexus-interpolation-1.24.jar
javax.inject-1.jar                       maven-resolver-impl-1.1.1.jar            plexus-interpolation.license
jcl-over-slf4j-1.7.25.jar                maven-resolver-impl.license              plexus-sec-dispatcher-1.4.jar
jcl-over-slf4j.license                   maven-resolver-provider-3.5.4.jar        plexus-sec-dispatcher.license
jsr250-api-1.0.jar                       maven-resolver-provider.license          plexus-utils-3.1.0.jar
jsr250-api.license                       maven-resolver-spi-1.1.1.jar             plexus-utils.license
maven-artifact-3.5.4.jar                 maven-resolver-spi.license               slf4j-api-1.7.25.jar
maven-artifact.license                   maven-resolver-transport-wagon-1.1.1.jar slf4j-api.license
maven-builder-support-3.5.4.jar          maven-resolver-transport-wagon.license   wagon-file-3.1.0.jar
maven-builder-support.license            maven-resolver-util-1.1.1.jar            wagon-file.license
maven-compat-3.5.4.jar                   maven-resolver-util.license              wagon-http-3.1.0-shaded.jar
maven-compat.license                     maven-settings-3.5.4.jar                 wagon-http.license
maven-core-3.5.4.jar                     maven-settings-builder-3.5.4.jar         wagon-provider-api-3.1.0.jar
maven-core.license                       maven-settings-builder.license           wagon-provider-api.license