以前也只是用过最基本的东西 现在重新比较系统的学习整理一遍
一 :为什么使用Maven
1.Maven更好的管理各个模块的依赖关系。
2.Maven制定了一个统一的项目层次结构规范。
3.Maven统一管理jar包方便
二.Maven是什么
1.Maven是一个基于项目(Project)对象(Object) 模型(Model)的自动化构建工具。
由java编写,仅适用于java平台。
2.什么是"构建"
是指在软件开发过程中,一个工程的编译,部署,搭建等环节的全过程。
最终在服务器运行的是编译后的结果。
构建中的各个环节:
1.清理(clean)
2.编译(bulid)
3.测试 (test)
4.报告 (report)
5.打包 (package)
6.安装 (install)
7.部署 (deploy)
三.Maven的下载,安装,验证
1.下载地址:http://maven.apache.org/download.cgi
2.解压核心包,得到如下目录结构

3.Maven安装包目录结构简介
bin:Maven的一些开发可执行脚本
boot:Maven的一个类加载器的框架,相当于Maven自己的类库
conf:Maven的配置信息文件夹,包含一个重要的配置文件:settings.xml
lib:Maven运行时所依赖自身和第三方的jar包
LICENSE:Maven的软件许可证
NOTICE:Maven包含第三方软件的声明
README:这个不用解释了把(滑稽脸)
4.配置Maven的环境变量
没什么好说的,首先你要配置了JAVA_HOME 这个环境变量 (也就是要先装JDK)
然后配置两个环境变量:
M2_HOME(需要自己添加):就是Maven安装时的路径,即bin目录的上一级
Path:Maven安装时的路径的下一级, 即bin目录
然后在控制台验证一下是否安装成功:mvn -v
成功的话显示如下结果:

四.Maven的几个核心概念
1.目录结构
2.仓库
3.坐标
4.依赖
5.生命周期/插件/目标
6.继承
7.聚合
8.POM.xml
①:一个简单的maven工程的目录结构:

②Maven的仓库
仓库:Maven存储所有项目共享的插件和依赖信息存放的位置。
分为两大类:
1>本地仓库
2>远程仓库
2.1>私服:Nexus 设在当前局域网上
2.2>中央仓库:
2.3>中央仓库的镜像:各大洲有设 提高效率
由于maven核心文件不包含 构建工程时用到的插件jar包,所以当执行maven构建命令时,如果本地仓库找不到,会联网进行下载。
本地仓库默认存放在C:\Users\Administrator\.m2\repository ,Administrator 是指当前windows系统登录的用户。我们可以更改本地仓库的位置:
1.找到maven 核心安装包的路径,打开conf下的settings.xml,
(例如我自己是:E:\apache-maven-3.0.5\conf\settings.xml)
2.找到节点<localRepository>,将他从注释中剪切到外面,更改他的值与你本地仓库路径一致即可 以后前用户的Maven本地仓库就在这里,从远程仓库下载插件时都会放到这里。
③常用Maven命令:
mvn clean:清理,相当于把之前编译好的文件删除
mvn compile:编译主程序,会生成target目录,用来存放编译好的文件
mvn test-compile:编译测试程序
mvn test:执行测试
mvn package:打包
mvn install:安装当前工程的输出文件到本地仓库
④Maven的坐标
一个坐标可以对应唯一一个工程,由三个基本节点组成:
groupId:公司或组织域名的倒写+项目名,也就是\src\main\java 下的路径(包名)。
artifactId:工程(模块)名称
version:工程的版本:分为RELEASE(稳定版) 和 SNAPSHOT(快照版),我们一般引用依赖时最好用稳定版
详细节点位置如下:

⑤Maven的依赖
1> Maven解析依赖的信息时会到本地仓库中寻找被依赖的jar包
对于我们自己开发的Maven工程,使用mvn install 命令 安装 进入本地仓库。
2> 依赖的常用范围
2.1>compile(默认):对主程序有效,对测试程序有效,参与打包,参与部署,贯穿构建过程。例(spring-core)
2.2>test:仅对测试程序有效。例(junit 4)
2.3>provided:仅开发时有效,不参与打包,不参与部署,因为服务器上自带有该范围的依赖。例(servlet-api)
⑥Maven的生命周期
maven生命周期仅定义了一个接口,由插件具体实现。它有三套相对独立的生命周期,各个阶段有顺序,有依赖关系:
1>Clean Lifecycle:在进行真正的构建之前进行一些清理工作。
2>Default Lifecycle:构建的核心部分,编译,测试,打包,部署等等。
3>Site Lifecycle:生成项目报告,站点,发布站点。
五.在eclipse中使用maven
1>设置Maven插件
Installations:指定Maven核心文件的位置。

User Settings:指定settings.xml文件位置,用来找到本地仓库。

2>创建Maven版的java工程,web工程,执行Maven命令
2.1>java工程
File-->New-->Maven Project

输入G和A,打包方式选择jar,Finish

之后我们设置一下全局JDK的版本:
打开settings.xml 找到<profiles>标签下添加:

2.2>创建Maven版的Web工程
打包方式那里选择war即可,其他步骤参照java工程,创建好了我们还需要设置一下(因为缺少WEB-INFO 文件夹下的信息)
右键项目名--》Properties--》Maven--》Project Facets
去掉红框中的勾,点Apply,再勾选它

会出现左下角的信息

点击进去,设置成如下:

一路OK-->Apply-->OK 即可。最后的结果如下:

上面有个图,但是不知道为啥老是看不到。。。
网友评论