一:下载Maven

安装Maven

直接解压
要配置环境变量
Maven目录介绍
| 目录名 | 功能说明 |
|---|---|
| bin | maven可执行文件所在目录其中mvn.cmd就是maven的执行文件 |
| boot | maven的支持包,第三方类加载器。ClassLoader,把字节码文件加载到内存中生成类对象 |
| conf | 配置文件目录,settings.xml 这是maven配置文件 |
| lib | maven也是用Java写的,运行所需要jar包 |
配置环境变量
1) 我的电脑右键,选择属性

2) 左上角选择"高级系统设置"

3) 选择高级下面的"环境变量"的按钮

4) 添加Maven的主目录为你的安装目录,设置Maven的可执行文件访问路径为Maven主目录的bin目录下
MAVEN_HOME=e:\apache-maven-3.3.9
Path=%MAVEN_HOME%\bin

测试安装好的Maven
打开cmd本地控制台,输入
mvn –v 或 mvn -version出现如下提示信息表示配置成功:

Maven仓库的概念和配置
什么是POM
POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。按面向对象的思想来管理整个项目。
它定义了项目的基本信息
描述项目如何构建
声明项目的依赖包
打包运行的方式
它是按面向对象的思想来管理项目的,每个maven工程中都有一个pom.xml配置文件。
Maven的仓库概念
Maven将所有的jar包放到仓库里面,我们通过在pom.xml文件中描述一小段文字就可以引用仓库里的jar包到项目中。
三种仓库

访问仓库的过程

配置本地仓库
1) 将软件文件夹中的Repository解压,可以放在任意的位置,这是我自己的本地仓库。
e:\repository2) 配置本地仓库,修改maven的安装目录中conf/settings.xml文件,在53行配置本地仓库为上面的目录。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>e:\repository</localRepository>
</settings>
3) 可选配置,修改settings.xml文件,159行指定中央仓库的镜像。这里使用的是阿里云的中央仓库,速度比官方的快很多。
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
4) 可选配置,修改maven使用JDK的版本,200行。如果不配置就需要在idea中配置。maven默认使用的是JDK1.5的版本,这里使用1.8的版本。
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
Maven的坐标
Maven坐标的概念
Maven的核心作用就是管理项目的依赖,引入我们所需的各种jar包。为了能自动的解析任何一个Java构件,Maven必须将这些Jar包或者其他资源进行唯一标识,就是Maven的坐标。
Maven坐标定义了一组元素,它们可以用来唯一标识一个项目、一个依赖、一个插件
坐标的元素定义
| 元素名称 | 说明 |
|---|---|
| groupId | 公司或组织名,反过域名。代表仓库中第1或第2级目录 |
| artifactId | 项目名或模块名,代表仓库中第二级目录 |
| version | 版本,代表仓库中第三级目录如果有SNAPSHOT单词,表示这是正在开发的项目 |

坐标的示例
例如:要引入junit的jar包,只需要在pom.xml配置文件中配置引入junit的坐标即可:
可以通过官方的中央仓库地址:http://repo1.maven.org/maven2/

通过以上三层结构就可以在仓库里面定位到一个jar包,坐标的每个组成部分都对应仓库里面的一级目录结构。如果之前已经访问过,则在本地仓库中也可以找到。
有一些groupId项目名字对应两级目录,而artifactId和version元素都对应一级目录

二:IDEA中配置Maven环境
IDEA绑定本地Maven仓库
1) 选择File-->Other Settings-->Default Settings

2) 选择Build,Execution,Deployment-->Build Tools-->Maven

3) 配置以下三项信息:Maven的主目录,配置文件settings.xml和本地仓库repository目录

4) 选择Build,Execution,Deployment-->Build Tools -->Maven-->Runner,设置Maven启动虚拟机的选项:VMOption,设置所有资源先从本地仓库查找,如果本地仓库中没有才去互联网找。
-DarchetypeCatalog=internal

5) 可选,如果汉字没有乱码则不用设置,Maven控制台输出中文如果出现乱码,则进行如下设置。
VMoptions: -Dfile.encoding=GBK 或者 -Dfile.encoding=UTF-8VMOptions配置多个参数需要使用空格隔开
演示:使用Maven骨架创建JavaWeb工程
Maven对JavaWeb工程目录结构的要求

使用骨架创建JavaWeb工程
1) 选择Maven骨架时,要选择maven-archetype-webapp,注:不要选成cocoon-22-archetype-webapp。
2) 将模块添加到哪个项目,指定其父模块,都设置为none。指定项目的坐标。

3) 确认Web的骨架信息,不用修改,直接选择下一步。

4) 指定模块名和保存模块所在的目录

5) 点finish按钮,运行Maven构建web项目,这时要连接网络,一段时间后显示Maven exeution finished。

6) 默认骨架创建好的JavaWeb工程如下,选右边的Maven Projects中的第2个项目刷新。左边的webapp图标上出现蓝色小点。表示这是Web页面的根目录,类似于以前的web目录。

手动完善JavaWeb的目录结构
1) 手动在main目录下创建java目录和resources,如图

2) 在src目录下,与main目录同级,创建test目录,并在test目录下创建java文件夹和resources,如图

3) 在右边的Maven Projects刷新,左边的工程各个文件夹的图标都发生变化

4) 最终目录结构,如图红色方框中的文件夹都是手动创建的。

maven的生命周期:clean、test、compile
Maven强大的一个重要的原因是它有一个十分完善的生命周期模型
什么是生命周期:项目从开发的开始到项目的开发结束,最终部署到服务器的整个过程

关于plugin配置的说明
Maven管理项目生命周期过程都是基于插件完成的,如果在pom.xml中配置了plugin插件,则使用配置的插件版本。如果没有配置,则使用Maven默认的插件版本,默认的插件版本更低一些。

Maven生命周期命令
以下所有的操作针对第1个通过向导创建的Web项目
clean命令
命令作用
清除target目录,将执行过程中生成的字节码文件等删除
操作演示
1) 选择day39_02_Web项目,可以看到target文件夹

2) 双击右边的Maven Projects-->Lifecycle-->clean执行清除操作

3) 操作结果如下

4) 可以看到删除了target目录。

5) 也可以选择Execute Maven Goal选择clean命令执行,注意选择正确的路径。这种方式主要用于命令带参数的情况。

test命令
命令作用
执行test目录下所有的测试类和测试方式
操作演示
1) 确认JUnit已经导入
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
2) 在src/test/java下创建测试类AppTest
package com.itheima;
import org.junit.Test;
public class TestOne {
@Test
public void test1() {
System.out.println("测试1");
}
@Test
public void test2() {
System.out.println("测试2");
}
}
3) 执行test命令测试,双击或输入运行的test命令

4) 在Run查看测试结果

如果有多个测试类,每个测试类中有多个方法,每个测试方法都会执行。
complie命令
命令作用
编译main目录下的源代码,生成字节码文件
操作演示
1) 选择day39_02_Web项目,删除target中classes目录下和test-classes目录下所有的文件,不删除目录。

2) 双击compile命令执行

3) 在Run下查看结果

4) 只编译了java中的代码,test-classes中的代码没有编译。

小结
clean:清除target目录下文件
test:执行test目录下所有的类和测试方法
compile:编译main目录下所有的源代码
maven的生命周期:package,install
package命令
命令作用
将整个项目打包成war或jar包
如果是web工程,打成war包,如果是java工程打成jar包
操作演示
1) 确认在Web项目中已经设置了打包的方式
<packaging>war</packaging>
2) 双击package或者输入命令执行

3) 在Run查看日志输出结果。注:每次打包前还会再次执行所有test命令

4) 在target或windows目录下都可以看到生成的war文件

注:如果WEB-INF/web.xml文件不存在,则打包失败。
install命令
命令作用
将打包好的war或jar包放置到本地仓库中
操作演示
1) 双击install或者输入命令,执行安装命令

2) 执行以后在Run窗口看到如下信息

3) 安装完毕后,在本地仓库中可以找到当前项目创建的war包信息

4) 可以将war复制到tomcat/webapps目录下

5) 通过浏览器访问

命令行下执行Maven命令
操作演示:
1) 打开命令提示符窗口

2) 运行命令之前,必须进入项目所在的根目录,可以看到pom.xml所在的目录

3) 执行Maven的清除命令:mvn clean

4) 查看执行结果,发现target文件夹已经没有

生命周期的命令
| 命令 | 说明 |
|---|---|
| mvn clean | 删除target目录 |
| mvn compile | 编译main目录下文件 |
| mvn test | 执行test目录下类和方法 |
| mvn package | 打包war或jar包 |
| mvn install | 将打包好的jar或war包复制到本地仓库中 |




