一、Maven简介  

  Maven可以翻译为“知识的积累”、“专家”、“内行”。作为Apache组织中的一个颇为成功的开源项目,Maven主要服务于基于Java平台的项目构建、依赖管理、和项目信息管理。Maven在各类项目中都可以大显身手。

  (1) Maven是优秀的构建工具
    除了编写源代码,我们每天有相当一部分时间花在了编译,运行单元测试,生成文档,打包,部署等繁琐且不起眼的工作上,这就是构建。Maven就是一个异常强大的构建工具,能够帮我们自动化构建过程,从清理,编译,测试,到生成报告,再到打包和部署。

    我们不需要一遍一遍的输入命令, 一次又一次点击鼠标,Maven帮我们很方便的搞定。Maven是跨平台的。
  (2) Maven还是依赖管理工具和项目信息管理工具
    1. Maven通过一组坐标能够找到任何一个Java类库(如jar),Maven给这个类库世界引入了经纬,让它们变得有秩序,于是我们可以借助它来有序地管理依赖,轻松地解决那些繁杂的依赖问题。

    2. Maven还能帮助我们管理原本分散在项目中各个角落的项目信息,包括项目描述,开发者列表,版本控制系统地址,许可证,缺陷管理系统地址等。除了直接的项目信息,通过Maven自动生成的站点,

      以及一些已有的插件,我们还能轻松地获得项目文档、测试报告、静态分析报告、源码版本日志报告等非常具有价值的项目信息。

  (3) 仓库
    Maven为全世界的Java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何流行开源类库。通过Maven的一些衍生工具(如Nexus),我们还能对其进行快速地搜索。只要定位了坐标,Maven就能够帮我们自动下载,省去了手工劳动。

  1.1、项目的构建

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

  

  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的安装

  2.1、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版本,第三方软件等简要介绍

  1.2、Maven的安装

    第一步:首先你要确保你的电脑已经安装了jdk1.6版本以上的,并配置好了JDK的环境变量。

    第二步:

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

      

    第三步:配置环境变量

      

    第四步:设置环境变量path,将%M2_HOME%\bin加入到path中,一定要注意使用分号;隔开。

    第五步:验证是否配置成功

      打开cmd命令

      输入:mvn-v

      

三、Maven的使用

  3.1、Maven的目录结构

    MavenProjectRoot(项目根目录)
       |----src
       |     |----main
       |     |         |----java ——存放项目的.java文件
       |     |         |----resources ——存放项目资源文件,如spring, hibernate配置文件
       |     |----test
       |     |         |----java ——存放所有测试.java文件,如JUnit测试类
       |     |         |----resources ——存放项目资源文件,如spring, hibernate配置文件
       |----target ——项目输出位置
       |----pom.xml ----用于标识该项目是一个Maven项目   

  3.2、手动创建一个Maven项目

    第一步:创建项目的根文件夹:FirstMaven

    

    第二步:创建一个pom.xml文件

    

<?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 
 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
 5 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 6     <!--所有的Maven项目都必须配置这四个配置项-->
 7     <modelVersion>4.0.0</modelVersion>
 8     <!--groupId指的是项目名的项目组,默认就是包名-->
 9     <groupId>cn.gacl.maven.hello</groupId>
10     <!--artifactId指的是项目中的某一个模块,默认命名方式是"项目名-模块名"-->
11     <artifactId>hello-first</artifactId>
12     <!--version指的是版本,这里使用的是Maven的快照版本-->
13     <version>SNAPSHOT-0.0.1</version>
14 </project>

 

  第三步:编写Java类文件,Maven项目规定,所有的*.java文件必须放在src目录下的main目录下的java目录中,在FirstMaven项目根目录中创建一个src目录,然后在src目录中创建main目录,在main目录中再创建java文件夹

       

  第四步:使用Maven编译Hello.java,首先进入到项目根目录,然后使用命令”mvn compile”进行编译

    

    使用Maven编译完成之后,在项目的根目录会产生一个target文件夹。

    

    打开target文件夹,可以看到里面有一个classes文件夹,classes文件夹存放的就是编译成功后生成的.class文件。

      

    第五步:使用"mvn clean"命令清除编译结果,也就是把编译生成的target文件夹删掉

     

    

四、修改Maven中心仓库下载到本地的jar的默认存储位置(配置本地仓库)

  从Maven中心仓库下载到本地的jar包的默认存放在”${user.home}/.m2/repository”中,${user.home}表示当前登录系统的用户目录(如"C:\Users\gacl")

    

    

    Jar包存放在这个位置不太好,我们希望能够自己定义下载下来的jar包的存放位置,因此我们可以自己设置下载到本地时的jar包的存放目录。

    

    找到apache-maven-3.3.9\conf下的settings.xml文件

      

    复制setting.xml文件,到默认的jar存放位置

    

    编辑setings.xml文件

    

    设置E盘下的AstudySoftwere/mavenrepository目录作为maven默认的下载存储位置

    把jar包下载到本地的好处就是,当编译时,会优先从本地的jar包去找,如果本地存在,就直接拿来用,如果不存在,就从Maven的中心仓库去下载。