maven01-----maven简介

一. 什么是maven

Maven(翻译为“专家”,“内行”)是一个跨平台的项目管理工具,是Apache组织中一个非常成功的开源项目。Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。

1.1 项目构建

项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。

  

  理想的项目构建是高度自动化,跨平台,可重用的组件,标准化的,使用maven就可以帮我们完成上述所说的项目构建过程。

1.2 依赖管理

依赖指的是jar包之间的相互依赖,比如我们搭建一个Struts2的开发框架时,光光有struts2-core-2.3.16.3.jar这个jar包是不行的,struts2-core-2.3.16.3.jar还依赖其它的jar包,依赖管理指的就是使用Maven来管理项目中使用到的jar包,Maven管理的方式就是“自动下载项目所需要的jar包,统一管理jar包之间的依赖关系”。

1.3 使用Maven的好处

  • Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定。
  • Maven的每一个动作都拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程
  • 只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮我们处理其他事情
  • 使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。

二. Maven下载

下载地址:http://maven.apache.org/download.cgi

下载完成后,得到一个压缩包,解压,可以看到maven的组成目录

 

Maven目录分析

  • bin:含有mvn运行的脚本。
  • boot:含有plexus-classworlds类加载器框架
  • conf:含有settings.xml配置文件
  • lib:含有Maven运行时所需要的java类库
  • LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍

三. Maven安装

1、首先要确保电脑上已经安装了JDK(要jdk 1.6+的版本),配置好JDK的环境变量,使用如下的两个命令检查检查JDK安装的情况。

1 Echo %JAVA_HOME%
2 Java -version

2、对apache-maven-3.2.3-bin.zip进行解压缩

对apache-maven-3.2.3-bin.zip进行解压缩,例如解压到如下目录(解压目录最好不要有中文)

3、设置系统环境变量:MAVEN_HOME

4、设置环境变量Path,将%MAVEN_HOME%\bin加入Path中,一定要注意要用分号;与其他值隔开,如下图所示:

%MAVEN_HOME%\bin代表的就是"E:\apache-maven-3.2.3\bin"目录

note: 值得注意的是Path环境遍历,当我们在cmd中输入命令时,Windows首先会在当前目录中寻找可执行文件或脚本,如果没有找到,Windos会接着遍历环境变量Path中定义的路径。由于将%MAVEN_HOME%\bin添加到了path中,而这里%MAVEN_HOME%\bin实际上是引用了前面定义的另一个变量,其值是Maven的安装目录。因此,Windows会在执行命令时搜索"E:\apache-maven-3.2.3\bin"目录,而maven执行脚本的额位置就是在这里。

5、验证Maven安装是否成功

打开cmd窗口

输入"mvn –v"命令 查看Maven的相关信息,如下图所示:

能够出现这样的信息就说明Maven的安装已经成功了

6、设置MAVEN_OPTS环境变量(可选配置)

由于Maven命令实际上是执行了Java命令,所以可以通过JAVA命令参数的方式来设置MAVEN运行参数。MAVEN_OPTS环境变量正是用于此用途

  MAVEN_OPTS

  -Xms128m -Xmx512m,分别设置JVM的最小和最大内存,如下图所示:

 四. Maven目录分析

1. bin:该目录包含了mvn运行脚本,这些脚本用来配置Java命令,准备好classpath和相关的Java系统属性,然后执行Java命令。其中mvn是基于UNIX平台的shell脚本,mvn.bat(或者mvn.cmd)是基于windows平台的bat脚本。在命令行输入任何一条mvn命令时,实际上就是在调用这些脚本。该目录下还包含了mvnDebug和mvnDebug.bat两个文件,同样,前者是UNIX平台的shell脚本,后者是Windows平台的bat脚本。那么mvn和mvnDebug有什么区别和关系呢?打开文件我们就可以看到,两者基本上是一样的,只是mvnDebug多了一条MAVEN_DEBUG_OPTS配置,其作用就是在运行Maven时开启debug,以便调试Maven本身。此外,该目录下还包含m2.conf文件,这是classworlds的配置文件。后面会介绍它的。

2. boot:该目录只包含一个文件,即plexus-classworlds-xxx.jar。这个jar是一个类加载器框架,相对于默认的java类加载器,它提供了更丰富的语法以便配置。Maven使用该框架加载自己的类库。

3. conf:该目录包含了一个非常重要的文件settings.xml。直接修改该文件,就能在机器上全局地定制Maven的行为。一般情况下,我们更偏向于复制该文件至~/.m2/目录下(~表示用户目录),然后修改该文件。用户范围定制Maven的行为。

4. lib:该目录包含了所有Maven运行时需要的Java类库。

五. ~/.m2

在用户目录下可以发现.m2文件夹。默认情况下,该文件夹下放置了Maven本地仓库.m2/reopsitory。所有的Maven构件都被存储到该仓库中,以方便重用。不过我们可以通过配置settings.xml文件中的localReopo选项来定制我们的repository路径。比如我们在C盘新建立了一个文件夹maven-reopsitory,并且修改用户目录下的settings.xml文件中的LocalRepo为c盘新建立的maven-reopistory路径。在eclipse中打开如下界面:

一旦我们选择了上面的settings.xml,它就会自动读取这个文件中配置的repository路径,比如我在settings.xml中LocalReop配置的是maven-repository的全路径,那么就会自动加载这个。如果我上面什么也没有选,就会是如下结果:

它就会默认加载用户目录下的.m2文件下的repo(这个一般是自带的)

总之:settings.xml中的localReop会读取对应配置的repo文件中的内容,里面包含了很多下载下来的jar包等。如果本地仓库没有,就从中央仓库拿。

 

 note:具体的settings.xml文件的学习,后面会讲到。

 

 

 

参考文献

《Maven实战》

https://www.cnblogs.com/xdp-gacl/p/3498271.html

posted @ 2019-01-09 19:53  Hermioner  阅读(322)  评论(0编辑  收藏  举报