Maven实战. 2.3安装目录分析

简介:

2.3安装目录分析

前面讲述了如何在各种操作系统中安装和升级Maven。现在来仔细分析一下Maven的安装文件。

2.3.1M2_HOME

前面讲到设置M2_HOME环境变量指向Maven的安装目录,本书之后所有使用M2_HOME的地方都指代了该安装目录。下面看一下该目录的结构和内容: bin

boot

conf

lib

LICENSE.txt

NOTICE.txt

README.txt 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的简要介绍,包括安装需求及如何安装的简要指令等。

2.3.2~/.m2

在讲述该小节之前,我们先运行一条简单的命令:mvn help:system。该命令会打印出所有的Java系统属性和环境变量,这些信息对我们日常的编程工作很有帮助。这里暂不解释help:system涉及的语法,运行这条命令的目的是让Maven执行一个真正的任务。我们可以从命令行输出看到Maven会下载mavenhelpplugin,包括pom文件和jar文件。这些文件都被下载到了Maven本地仓库中。

现在打开用户目录,比如当前的用户目录是C:\Users\Juven Xu\,你可以在Vista和Windows7中找到类似的用户目录。如果是更早版本的Windows,该目录应该类似于C:\Document and Settings\Juven Xu\。在基于UNIX的系统上,直接输入cd 回车,就可以转到用户目录。为了方便,本书统一使用符号 ~ 指代用户目录。

在用户目录下可以发现.m2文件夹。默认情况下,该文件夹下放置了Maven本地仓库.m2/repository。所有的Maven构件都被存储到该仓库中,以方便重用。可以到~/.m2/repository/org/apache/maven/plugins/mavenhelpplugins/目录下找到刚才下载的mavenhelpplugin的pom文件和jar文件。Maven根据一套规则来确定任何一个构件在仓库中的位置,这一点在第6章将会详细阐述。由于Maven仓库是通过简单文件系统透明地展示给Maven用户的,有些时候可以绕过Maven直接查看或修改仓库文件,在遇到疑难问题时,这往往十分有用。

默认情况下,~/.m2目录下除了repository仓库之外就没有其他目录和文件了,不过大多数Maven用户需要复制M2_HOME/conf/settings.xml文件到~/.m2/settings.xml。这是一条最佳实践,我们将在2.7小节详细解释。
相关文章
|
12天前
|
Java 应用服务中间件 Apache
Maven程序 tomcat插件安装与web工程启动
Maven程序 tomcat插件安装与web工程启动
14 0
|
12天前
|
Java Linux Maven
Maven下载与安装详细教程
Maven下载与安装详细教程
39 0
|
24天前
|
存储 搜索推荐 Java
rodert教你学Maven-实战这一篇就够了(上)
rodert教你学Maven-实战这一篇就够了
19 1
 rodert教你学Maven-实战这一篇就够了(上)
|
11天前
|
Java Maven
maven跳过测试清理、打包、安装
maven跳过测试清理、打包、安装
17 4
|
5天前
|
Java Maven
maven下载安装与配置
maven下载安装与配置
13 0
|
6天前
|
Java 应用服务中间件 API
如何安装与使用Java EE 8、Servlet 3.0及Apache Maven进行高效开发
搭建高效Java EE 8开发环境,包括安装JDK、选择WildFly或Payara Server作为应用服务器,以及安装Apache Maven。使用Maven创建Servlet 3.0 Web项目,编写 HelloWorldServlet,打包部署到服务器,通过访问特定URL测试应用。这一流程助力开发者实现快速原型和大型项目开发。【7月更文第1天】
47 0
|
10天前
|
Java Linux 网络安全
在Linux上搭建Maven仓库的实战教程
在Linux上搭建Maven仓库的实战教程
27 0
|
12天前
|
Java Linux Maven
Centos7.6安装Maven3.8.3并配置阿里云镜像
Centos7.6安装Maven3.8.3并配置阿里云镜像
76 0
|
12天前
|
Linux
centos7安装maven3.8.1并配置阿里云镜像
centos7安装maven3.8.1并配置阿里云镜像
60 0
|
16天前
|
Java 应用服务中间件 Maven
idea配置maven以及手动添加webapp目录
idea配置maven以及手动添加webapp目录

推荐镜像

更多