安装目录分析
M2_HOME
之前配置了M2_HOME变量,指向了Maven安装目录,安装目录的结构和内容如图所示:
bin:
该目录包含了mvn运行的脚本,这些脚本用来配置Java命令,准备好classpath和相关的Java系统属性,然后执行Java命令。在命令行输入任何一条mvn命令时,其实就是在调用bin目录中的脚本。
该目录中有mvn和mvnDebug两种脚本,扩展名为.bat的脚本为windows执行脚本,没有扩展名的为基于UNIX平台的shell脚本。
该目录中还有mvnDebug文件,该文件和mvn文件类似,打开后可以看到,两个文件的不同之处在于mvnDebug文件,比mvn文件多了个MAVEN_DEBUG_OPTS配置:
该配置的作用就是在运行Maven时开启debug,以便调试Maven本身。
此外该目录还包含m2.conf文件,这个文件是classworlds的配置文件。后续的部分,会针对说明。
boot:
该目录,只包含一个文件,以当前版本的Maven为例,该文件是:plexus-classworlds-2.5.2.jar。plexus-classworlds是一个类加载器框架,相对于默认的java类加载器,它提供了更丰富的语法以方便配置,Maven使用这个框架加载自己的类库。
conf:
该目录包含了一个非常重要的文件setting.xml。直接修改该文件,就能在机器上全局的定制Maven的行为。一般在工作中,我们习惯性的复制该文件到用户目录下的.m2目录下,然后修改该文件,在用户范围内定制Maven的行为。
lib:
该目录包含了所有Maven运行时需要的java类库,Maven本身是分模块开发的,因此用户能看到诸如maven-core-3.2.5.jar、maven-model-3.2.5.jar之类的文件。当然这里也包含了一些Maven用到的第三方类库。可以说lib目录就是真正的Maven。还有一个点就是,在这个目录中可以找到Maven内置的超级POM文件。
其他:
LICENSE记录了Maven使用的软件许可证,NOTICE记录了Maven包含的第三方软件,而README则包含二楼Maven的主要介绍。