一、maven概述
1.1、项目开发中的问题

1、我的项目依赖一些jar包,我把他们放在哪里?直接拷贝到项目的lib文件夹中?
如果我开发的第二个项目还是需要上面的那些jar包,再把它们复制到我当前项目lib中?
那如果现在是第三次了,再复制一次吗?
-----这样真的好吗?这样子操作会引起什么样的问题?
以上操作会出现的问题:
重复存放jar包;容易出现jar包冲突;手动拷贝jar包容易缺少一些jar包。
解决方案:用maven来管理jar包
2、我写了一个数据库相关的通用类,并且推荐给了其他项目组,现在已经有5个项目组使用它了,
今天我发现了一个bug,并修正了它,我会把jar包通过邮件发给其他项目组。
-----这样真的好吗?那如果有新的bug出现,还要改呢?
以上操作会出现的问题:需要开发人员每次都手动接收新的jar包并替换掉本地的jar包,麻烦。
解决方案:用maven来管理jar包
注意:在maven中所描述的依赖就是我们平常使用的第三方的jar包。
1.2、maven是什么
1.2.1 maven定义
Maven是一个项目管理工具。它包含了一个项目对象模型 (Project Object Model),一组标准集合,
一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),
和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,
然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
---《百度百科》
maven:本质上是一个软件,用来管理项目的。
1.2.2 mven的作用
- 项目构建管理: maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生命周期管理:编译、测试、打包、部署、运行。
- 管理依赖(jar包): maven能够帮我们统一管理项目开发中需要的jar包;
- 管理插件: maven能够帮我们统一管理项目开发过程中需要的插件;
二、maven快速入门
2.1、maven的下载与安装
下载
官方网站:http://maven.apache.org/
下载页面:http://maven.apache.org/download.cgi

注:本教程使用的是3.3.9版本的maven。
安装
maven安装包下载完成后是一个压缩文件,如下图所示:

我们需要将压缩包解压到一个没有中文,空格或其他特殊字符的文件夹内即可使用:

2.2、maven安装目录简介

| 目录名 | 功能说明 |
|---|---|
| bin | 二进制的可执行文件,如:mvn.cmd是maven的核心可执行文件 |
| boot | 第三方类加载器插件,类似于ClassLoader |
| conf | 配置文件夹,其中的settings.xml是用于配置本地仓库的 |
| lib | maven自身运行所需要的jar包 |
2.3、maven配置-MAVEN_HOME
2.3.1 配置JAVA_HOME
3版本的maven软件依赖1.7或以上版本的JDK,所以安装maven之前需要确认jdk的版本和JAVA_HOME是否正确配置:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FRE1VpCM-1683810959863)(img/1536292961879.png)]](https://img-blog.csdnimg.cn/515af081bea348dba728446155587a9d.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FyTWmgpq-1683810959865)(img/1536293005245.png)]](https://img-blog.csdnimg.cn/49ce187f85184062b22842aa6dc3e43f.png)
注意:JAVA_HOME路径需要设置成bin目录的上一级目录;
2.3.2配置MAVEN_HOME
按照上面JAVA_HOME的配置方式,将maven的安装目录配置到环境变量中。MAVEN_HOME=maven压缩包解压目录,就是bin的上一级目录。
第一步:新增环境变量:MAVEN_HOME
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rnpHTo5d-1683810959866)(img\image-20200827221852376.png)]](https://img-blog.csdnimg.cn/9bf11038d65c4d699941268c81741023.png)
第二步:在path环境变量中添加:%MAVEN_HOME%\bin
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Foi91by-1683810959867)(img\image-20200222112524303.png)]](https://img-blog.csdnimg.cn/4dc4111953554cc98228af0fe9f00300.png)
第三步:测试:在cmd控制台中输入命令: mvn -version ;如果出现以下maven的版本信息,则说明maven的安装与环境变量的配置均正确;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eY2oDmqV-1683810959867)(img\image-20200827222004265.png)]](https://img-blog.csdnimg.cn/9886177288e14f4893b899cbffbed440.png)
说明:出现如上信息说明maven安装和配置环境变量都成功。
2.4、maven仓库介绍
仓库就是一个目录(文件夹),这个目录被用来存储我们项目的所有依赖(就是jar包)和插件。
仓库包括两类仓库:
1)本地仓库
2)远程仓库
远程仓库又包括两类:
a:中央仓库
b:私服
具体分类如下图所示:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tbMXotvO-1683810959867)(img\image-20200222150517873.png)]](https://img-blog.csdnimg.cn/49442da75077407e90a033a679fc734f.png)
2.4.1、maven本地仓库配置
2.4.1.1 本地仓库是什么
本地仓库就是本地目录(文件夹),这个目录被用来存储我们项目的所有依赖(就是jar包),本地仓库供你电脑上所有项目使用,maven所有的jar包都是从远程仓库下载到本地仓库.
2.4.1.2 配置本地仓库
本地仓库的位置是通过maven的核心配置文件(settings.xml)来配置的。settings.xml文件位于maven安装目录:apache-maven-3.3.9\conf\settings.xml 。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pRZMJVGi-1683810959868)(img/1536320866111.png)]](https://img-blog.csdnimg.cn/b4ce494d35dc4daca76eac495cec608d.png)
打开settings.xml文件:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-trvYU7XO-1683810959869)(img/1536321154337.png)]](https://img-blog.csdnimg.cn/05f870724a744496a3d60f8020f34c7f.png)
发现本地仓库默认的地址为当前用户的/.m2/repository目录。
一般情况下,我们需要自己重新设置本地仓库的地址,设置方法如下:
- 第一步:在maven的安装目录下创建一个repository文件夹(一般习惯将仓库地址和maven安装目录放置在一起)。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YloXwtyc-1683810959870)(img\image-20200222170446372.png)]](https://img-blog.csdnimg.cn/e6b8b3dcc2634ab5bd2698fd617f3bfa.png)
- 第二步:在核心配置文件setting.xml中,将仓库存放的位置设置成:D:\MySoft\maven\apache-maven-3.3.9\repository(以自己的安装路径为准);
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OQbBtLNK-1683810959871)(img\image-20200827222205253.png)]](https://img-blog.csdnimg.cn/9be5cdb150eb4e61adced9872aba0a69.png)
2.4.2、远程仓库
远程仓库又包括两类:
a:中央仓库
b:私服
2.4.2.1、中央仓库
中央仓库默认是apache提供的,位于国外。(中央仓库的地址:http://mvnrepository.com/)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GBcEed9W-1683810959872)(img\image-20200222171121642.png)]](https://img-blog.csdnimg.cn/c24fcac172cb466bbf1030a655a05a3b.png)
2.4.2.2、配置maven私服
2.4.2.2.1 什么是私服
私服是可以架设在局域网的一种特殊的远程仓库,目的是代理中央仓库来部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库(中央仓库),将构件下载到私服,再提供给本地仓库下载。
我们现在使用的私服有两个:1)阿里云私服(连接外网) 2)传智私服(在教室里局域网)
我们到公司,公司都会有自己的私服。其实私服就是一个服务器。我们的maven项目到私服服务器上去下载jar包到本地仓库供maven项目使用。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mfHjFYpG-1683810959874)(img\image-20200222173453607.png)]](https://img-blog.csdnimg.cn/4e4d0ab46314484d91f8e49a71a37250.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XBNiL7Ur-1683810959875)(img/1536321846073.png)]](https://img-blog.csdnimg.cn/5979938a7ec64d5cb92c48a6c5dae7d1.png)
2.4.2.2.2 配置私服
打开settins.xml文件,找到标签节点,在这个标签中添加以下配置信息中的任意一个:
【传智局域网私服】–在教室使用
<mirror>
<id>my</id>
<mirrorOf>*</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://192.168.50.187:8081/repository/maven-public/</url>
</mirror>
【阿里云私服】–连外网时使用
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

注: 千万注意, 只可配置一个(另一个要注释!) 不然两个可能发生冲突 ,导致jar包下不下来 !!!
三、maven工程
在创建maven工程之前一定要保证上述的仓库都是配置成功了,否则无法创建maven项目,因为创建maven项目都要到仓库中去下载插件。那么上面我们已经配置好maven仓库了,接下来我们就要创建maven工程了。
1、IDEA配置本地maven
因为idea和maven是没有直接关系的。所以使用idea创建maven工程之前需要将本地的maven配置到idea环境中,这样才可以在idea中创建maven工程。配置方法如下:
1.1 配置本地maven
- 第一步:关闭当前工程,回到idea主界面找到customize-----All settings:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IWy7Cxuh-1683810959877)(img\image-20211122222948048.png)]](https://img-blog.csdnimg.cn/a13ba5d3242e4485975786aaefa52bb5.png)
2.第二步:配置maven_home和settings.xml的路径:
在搜索框里搜索maven,然后按照下面操作即可。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lw3G0aP1-1683810959878)(img/1536323155528.png)]](https://img-blog.csdnimg.cn/20704a62e762497ea555d4aad6faefdb.png)
1.2 配置maven参数
使用idea创建maven项目后,默认会去网络中的中央仓库中下载一些配置资源,那么会很慢,这里需要设置下,那么就不会到中央仓库去下载了一些资源,而是到本地仓库下载。需要设置参数archetypeCatalog。设置方法如下:将-DarchetypeCatalog=internal 设置到Maven–Runner–VM Options中。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LUBWbxGe-1683810959879)(img/1536323356026.png)]](https://img-blog.csdnimg.cn/fe0fa15786a649d9aa34858eb1636304.png)
参数:-DarchetypeCatalog=internal
说明:
1)-D:在maven中表示设置参数的意思
2)archetypeCatalog:表示设置参数的名字
3)internal:表示设置参数的值
2、创建maven的java工程
使用maven创建的项目可分为3种类型:
1)普通maven项目,就是之前的javase项目–》java project,项目打成jar包运行
2)maven的web项目,项目打成war包运行
3)maven的pom项目,也称为maven的聚合项目(我们这里不讲解,后续maven高级课程讲解)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q3acaA8N-1683810959879)(img\image-20200222210804546.png)]](https://img-blog.csdnimg.cn/9dc88054731e46559d4adffe98a3ae8a.png)
2.1 创建步骤
- 第一步:File–New–Project
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vex9udYg-1683810959880)(img/1536323729345.png)]](https://img-blog.csdnimg.cn/b3af0b49acbc442b8ecedf4f120ea3e1.png)
- 第二步:选择maven然后下一步:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HrQH1vHh-1683810959881)(img/1536323794913.png)]](https://img-blog.csdnimg.cn/cabdfa88a05044a98852756b2cb77c3f.png)
- 第三步:填写项目的坐标信息:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AfkN7Vvx-1683810959883)(img/1536324650210.png)]](https://img-blog.csdnimg.cn/0b9ce421a17841c2a9f1fa236193a1b6.png)
附:
GroupID是项目组织唯一的标识符 :一般命名为 域名.项目组名
ArtifactID就是项目的唯一的标识符,表示项目名。 一般是 xxx-xxx 比如maven-java
version:项目版本号 第一次就是1.0.0 第二次比较多的修改 2.0.0 第三次小的修改 2.1.0 第四次修改很小的bug2.1.1 ....
- 第四步:指定项目名称和路径:idea会把项目名中的
-去掉,我们给添加上即可。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IdyQ6nOx-1683810959884)(img/1536324797585.png)]](https://img-blog.csdnimg.cn/4c898a61330541a5af4ca3e5b92615ad.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5XiKcMbB-1683810959884)(img\image-20211202102736599.png)]](https://img-blog.csdnimg.cn/cf4ac566bdc348d2b0b5b7ae1e61eb6f.png)
2.2 java工程目录简介
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KVnbnbTM-1683810959884)(img/1536325214803.png)]](https://img-blog.csdnimg.cn/e6cc1e9bd88548c4b089112068e6857f.png)
说明:
1).idea和maven-java1.iml只要在idea中创建工程都会存在的,idea生成的,不用关心
2)pom.xml是maven的核心配置文件,我们会在这个配置文件配置依赖。下面会讲解
3)main:主代码,在实际开发中是项目上线运行的
a:java:存放java代码的
b:resources:存放配置文件的,相当于以前创建的java工程中的src。例如存放mybatis、数据库连接池的配置文件。这个目录只能存放配置文件。
4)test:存放测试的代码,项目上线之前先进行测试,然后在上线。
a:java:存放编写java的测试的代码,例如junit测试
2.3 运行java代码
1.在main目录的java目录上右键创建包
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-llYaKtHh-1683810959884)(img\image-20200223100509091.png)]](https://img-blog.csdnimg.cn/babf2ffa5d30433ab29639f9d81f9df6.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qVHJncU2-1683810959885)(img\image-20200223100637766.png)]](https://img-blog.csdnimg.cn/03fdcd0ac2b04b0a8255249788e71764.png)
2.在创建好的包上右键创建java类
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MeXyObw4-1683810959886)(img\image-20200223100805731.png)]](https://img-blog.csdnimg.cn/ed355c489b2e4c0e81bf48268cd44333.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ovZy91DW-1683810959887)(img\image-20200223100836856.png)]](https://img-blog.csdnimg.cn/f184b2843c3f4f1a947de01b24bd9416.png)
3.编写以下代码进行测试:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("hello maven..");
}
}
运行程序:点击main方法左侧的绿色小三角,点击图标1 或者图标2 运行程序:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pgs3Jx18-1683810959888)(img/1536325547012.png)]](https://img-blog.csdnimg.cn/e209d0cd8cf040d78a97ece3ba659aae.png)
运行结果:如果控制台上能够正常打印如下信息,则说明工程创建没问题:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LIb968nO-1683810959888)(img\image-20200223101146982.png)]](https://img-blog.csdnimg.cn/4d2081b9df3047268487ebcc06fa2967.png)
四、maven项目构建的生命周期(了解)
1、maven项目构建的生命周期
1.1 生命周期是什么
在Maven出现之前,项目构建的生命周期就已经存在,软件开发人员每天都在对项目进行清理,编译,测试及部署。虽然大家都在不停地做构建工作,但公司和公司间,项目和项目间,往往使用不同的方式做类似的工作。
Maven的生命周期就是为了对所有的构建过程进行抽象和统一。Maven从大量项目和构建工具中学习和反思,然后总结了一套高度完美的,易扩展的生命周期。这个生命周期包含了项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和站点生成等几乎所有构建步骤。
Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作,在Maven的设计中,实际任务(如源代码编译)都交由插件来完成。
1.2 maven的三套生命周期
maven拥有三套相互独立的生命周期,分别是clean,default和site。clean 生命周期的目的是清理项目 ,default 生命周期的作用是构建项目 ,site 生命周期的目的是构建项目站点 。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KxWUo7Xt-1683810959889)(img\image-20200223114327732.png)]](https://img-blog.csdnimg.cn/2393ff6aef8e4fd3b17cd5fd10b46750.png)
maven的生命周期都对应着具体的命令如下:
clean生命周期
clean生命周期的目的是清理项目,它包含三个阶段:
- pre-clean 执行一些清理前需要完成的工作;
- clean 清理上一次构建生成的文件;
- post-clean 执行一些清理后需要完成的工作;
default生命周期
default生命周期定义了真正构建项目需要执行的所有步骤,它是所有生命周期中最核心的部分。其中的重要阶段如下:
- compile :编译项目的源码,一般来说编译的是src/main/java目录下的java文件至项目输出的主classpath目录中;
- test :使用单元测试框架运行测试,测试代码不会被打包或部署;
- package :接收编译好的代码,打包成可以发布的格式,如jar和war;
- install: 将包安装到本地仓库,供其他maven项目使用;
- deploy :将最终的包复制到远程仓库,供其他开发人员或maven项目使用;
site生命周期
site生命周期的目的是建立和发布项目站点,maven能够基于pom文件所包含的项目信息,自动生成一个友好站点,方便团队交流和发布项目信息。该生命周期中最重要的阶段如下:
- site :生成项目站点文档;
2、maven生命周期相关命令
我们使用以下命令可以完成maven生命周期,演示生命周期的命令必须在pom.xml所在的目录下打开dos窗口然后输入如下命令进行演示。
1.找到pom.xml文件位置
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jl2ohiZI-1683810959890)(img\image-20200223120013240.png)]](https://img-blog.csdnimg.cn/69783ca01f524408bfb5db87a3c7a1e4.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aN7JCAin-1683810959890)(img\image-20200223120053409.png)]](https://img-blog.csdnimg.cn/40b01e808a99466e99fec9f2a775cec7.png)

2.在pom.xml文件位置输入cmd打开dos窗口

mvn clean:调用clean生命周期的clean阶段,清理上一次构建项目生成的文件;
mvn compile :编译src/main/java中的java代码;
mvn test :编译并运行了test中内容 ;
mvn package:将项目打包成可发布的文件,如jar或者war包;
mvn install :发布项目到本地仓库 ;
2.1、mvn clean
clean命令的作用是清理项目编译或打包后生成的文件,具体对应maven项目中的target目录;
需求:清理存储上一次构建项目生成的文件target.
未清理前:


![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VeWH3Cix-1683810959895)(img\image-20200223120825341.png)]](https://img-blog.csdnimg.cn/915d8c164a704acb9f1d2b61abb55cf7.png)
清理之后:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8EZ4PjRA-1683810959896)(img\image-20200223120913032.png)]](https://img-blog.csdnimg.cn/4f75d05b32504b13bd4dc838be82a42f.png)
我们发现不存在target目录了。
2.2、mvn compile
compile命令的作用是编译src/main/java中的java代码编译成可直接运行的class文件。编译完成后maven项目会自动创建一个target目录来存储这些文件。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g5LMrHZz-1683810959897)(img\image-20200223121237428.png)]](https://img-blog.csdnimg.cn/daa36202d14a4ac1bef0630eb6641091.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hBwjdXMX-1683810959898)(img/1536462238225.png)]](https://img-blog.csdnimg.cn/dea7f122292e44a684ec65a5463c2d0c.png)
2.3、mvn test
test命令的作用是编译并运行maven项目的src/test目录下的junit测试代码。注意:只能运行junit测试代码。 并且使用test运行的测试类的类名必须以Test结尾,否则不会运行,不会看到结果。
在test/java目录下创建一个测试类,书写测试方法,代码如下:
import org.junit.Test;
public class MavenTest {
@Test
public void show() {
System.out.println("show....");
}
}
在dos窗口输入的测试命令:
mvn test
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-buzZN9Iq-1683810959899)(img\image-20200223162545091.png)]](https://img-blog.csdnimg.cn/5688639a39b542219828f1f48a8473b1.png)
编译后生成的文件:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eUjMazwn-1683810959900)(img\image-20200223165743886.png)]](https://img-blog.csdnimg.cn/6f44290a4d3548e3b7510bed0515b052.png)
运行日志:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KO12z2if-1683810959901)(img\image-20200223165831269.png)]](https://img-blog.csdnimg.cn/0d788a68c180433995fc9c6ebdddc988.png)
注意:
1.test命令只能运行test目录下的junit包下的类
2.test命令也可以运行多个测试方法:
import org.junit.Test;
public class MavenTest {
@Test
public void show() {
System.out.println("show............");
}
@Test
public void show1() {
System.out.println("show1............");
}
@Test
public void show2() {
System.out.println("show2............");
}
}
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZwTHkk8C-1683810959902)(img\image-20200223170140740.png)]](https://img-blog.csdnimg.cn/943f7119a7694b39946020d4c9a43701.png)
2.4、 mvn package
package命令是将项目打包成可以发布的包。maven项目常见的打包方式有两种:
1)maven的java project会打成jar包。
2)maven的web project会打成war包。
打包完成后将生成的文件存放在target目录中。
命令使用格式:
mvn package
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8SjmL5yp-1683810959903)(img\image-20200223171236347.png)]](https://img-blog.csdnimg.cn/5bc4110262a8472cbc9a8e293a834865.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DdfumBBJ-1683810959904)(img\image-20200223171301555.png)]](https://img-blog.csdnimg.cn/3c5a3cc6f8e94aef81a6aa125b2d46e3.png)
注意:每次打包前还会再次执行所有test命令
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rO7uZgo0-1683810959904)(img\image-20200223171009355.png)]](https://img-blog.csdnimg.cn/235afe5856164c4b974ec80e802331eb.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nUVtmrLy-1683810959905)(img/1536463083110.png)]](https://img-blog.csdnimg.cn/a947ae7df9d74c70b227e8a28ba49796.png)
2.5、 mvn install
install命令是将当前的项目打包并发布到本地仓库中,供本地的其他maven项目使用。项目发布的路径:本地仓库路径/groupId/artifactId/
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T0BEOr53-1683810959906)(img/1536463413099.png)]](https://img-blog.csdnimg.cn/6ecbe27be4cb482c9a68aa627c0b0af7.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lhYkgwnS-1683810959906)(img/1536463635011.png)]](https://img-blog.csdnimg.cn/5d0d8cb72e424b3da53a0f71013584f8.png)
注意:每次安装前还会再次执行所有test命令
2.6、mvn tomcat:run
tomcat:run表示部署项目,项目上线运行。能够部署项目都是web项目。我们这里演示部署web项目。这里启动tomcat并不是使用idea中的tomcat,而是maven自带的。所以我们部署好项目之后发现idea中的tomcat并没有启动。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fSI9q9zn-1683810959907)(img\image-20200223173429731.png)]](https://img-blog.csdnimg.cn/1b9280fdce8c46cc92720b139b9cef31.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nH2y793I-1683810959907)(img\image-20200223173533084.png)]](https://img-blog.csdnimg.cn/6dcf4b2ff2c34bef815de7267350eab6.png)
停止服务器:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AWUXuQQn-1683810959908)(img\image-20200223173825661.png)]](https://img-blog.csdnimg.cn/b126ce4f6e5343309b46c640b86bb8fd.png)
无法访问服务器了:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BRUBVnem-1683810959908)(img\image-20200223173849133.png)]](https://img-blog.csdnimg.cn/ed90ca57432e4a81820d8c68f3bb8d2c.png)
注意:使用maven在命令行中部署项目,一定要停止idea中的tomcat。否则,在命令行中不会启动成功tomcat。
3、maven生命周期相关插件
maven的核心包只有几兆大小,核心包中仅仅定义了抽象的生命周期。生命周期的各个阶段都是由插件完成的,它会在需要的时候下载并使用插件,例如我们在执行mvn compile命令时实际是在调用maven的compile插件来编译java源码:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LD8zKNDQ-1683810959909)(img/1536460661151.png)]](https://img-blog.csdnimg.cn/96f2e0be59da48faa49e2c924788671a.png)
我们使用IDEA创建maven项目后,就不需要再手动输入maven的命令来构建maven的生命周期了。IDEA给每个maven构建项目生命周期各个阶段都提供了图形化界面的操作方式。具体操作如下:
3.1 打开maven视图
依次打开:View–》Tool Windows–》Maven Projects
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g8wlesWX-1683810959909)(img/1536461075676.png)]](https://img-blog.csdnimg.cn/2218a2901fb8454cb9a942030342f72e.png)
打开IDEA编辑区右侧:Maven Projects会弹出如下窗口,打开窗口中的Lifecycle即可看到相关命令。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4qXiWt2q-1683810959910)(img/1536461166495.png)]](https://img-blog.csdnimg.cn/5f6903f799874c5abf5e8b207c08dd6e.png)
3.2 执行命令
双击Lifecycle下的相关命令图标即可执行对应的命令。或者点击运行按钮:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vvptvBhX-1683810959910)(img\image-20200223183338364.png)]](https://img-blog.csdnimg.cn/f3bcdad48e994b1080d0e59ac4ccd950.png)
五、maven应用详解【重点】
maven是一个项目管理工具,其中依靠于一个很重要的xml文件:pom.xml。我们接下来学习下pom.xml文件的配置。
1、pom配置详解
pom(Project Object Model)指的是项目对象模型,用来描述当前的maven项目。使用pom.xml文件来实现。
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.heima.maven</groupId>
<artifactId>maven-web2</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
</project>
【pom文件详解】
1. <project> :pom文件的根标签,表示当前maven项目;
2. <modelVersion>: 声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,目前POM模型版本是4.0.0;
3. 坐标:定位项目在本地仓库中的位置,下面三个标签组成一个坐标。
1)<groupId>:maven项目组织id标识符,一般是公司域名倒过来写<groupId>com.heima.maven</groupId>
2)<artifactId>:项目的标识符--项目名。<artifactId>maven-web2</artifactId>
3) <version>:项目的版本号;<version>1.0-SNAPSHOT</version>
4. <packaging>:maven项目的打包方式一般配置jar或者war;
2、依赖管理【重点】
Maven的作用:1.构建项目(maven项目在任何一个开发工具中结构都是一样的)及项目的生命周期;2.依赖管理;3.插件管理;
Maven的一个核心的作用就是管理项目的依赖,引入我们所需的各种jar包等。为了能自动化的解析任何一个Java构件,Maven必须将这些Jar包或者其他资源进行唯一标识,这是管理项目的依赖的基础,也就是我们之前说的坐标。包括我们自己开发的项目,也是要通过坐标进行唯一标识的,这样才能在其它项目中进行依赖引用。
2.1 Maven坐标
坐标的定义元素如下:
- groupId:定义当前项目(jar包)隶属的实际项目组。
- artifactId:定义当前项目(jar包)的名称;
- version:定义当前项目(jar包)的版本号;
通过上面三个参数我们就能够确定一个唯一版本号的jar包。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.2.RELEASE</version>
</dependency>
2.2 依赖导入
1、使用IDEA工具导入:
IDEA中给我们提供了一种搜索jar包的方式,帮助我们快速导入jar包。使用方法如下:
-
第一步:在pom.xml文件中书写dependencies标签,鼠标光标移入到dependencies标签中,按Alt+Insert键。会弹出一个选择框:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rvKZz2DO-1683810959911)(img\image-20200223204802581.png)]](https://img-blog.csdnimg.cn/176efa1ea0ca4ae69ecbf5727b6593f3.png)
-
选择Dependency后会弹出一个搜索框:输入要添加的jar包的名字
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FWZO8Grl-1683810959912)(img\image-20200831225746925.png)]](https://img-blog.csdnimg.cn/629e2cf2e1544a4c816f890bd6f63205.png)
选择需要的jar包后按回车键即可自动添加此依赖;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wLh6Xwdm-1683810959912)(img\image-20200831225831514.png)]](https://img-blog.csdnimg.cn/ef4b1e60d1534837af6aa4adb69ca9c2.png)
注意:在idea中还可以直接输入要使用的包。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZL56ew2h-1683810959912)(img\image-20200831225930294.png)]](https://img-blog.csdnimg.cn/72f88aead3284d6d85e43bc2dee88ae0.png)
2、从远程仓库中获取坐标:
如果我们导入的依赖本地仓库中没有,使用IDEA搜索就搜索不到了,我们需要从网络中查找这个依赖的坐标,然后将其添加到pom文件中。添加完成之后,maven会帮我们从私服或中央仓库中下载该依赖。
搜索依赖坐标的方法:
1.从私服中获取,联网的情况下可以使用阿里云私服,在教室使用局域网可以连接传智私服。
阿里云私服地址:
http://maven.aliyun.com/nexus/content/groups/public
传智局域网私服地址:
http://192.168.50.22:8081/nexus/content/groups/public/
1).这里访问阿里云私服
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-doIbx2Pp-1683810959912)(img\image-20200223215544210.png)]](https://img-blog.csdnimg.cn/a0f72e72dfcc443eb7cd4c338cd98871.png)
阿里云首页:
https://maven.aliyun.com
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jwjsdq3T-1683810959912)(img\image-20200831230327159.png)]](https://img-blog.csdnimg.cn/78441c57f1984f50a85389c83c588aab.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QlYOVXWk-1683810959913)(img\image-20200223220100212.png)]](https://img-blog.csdnimg.cn/d27b2345143f48f3ab7ca39d1c306ff8.png)
2).复制上述的依赖到pom.xml文件中。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DXDDcEUN-1683810959913)(img\image-20200223220246761.png)]](https://img-blog.csdnimg.cn/5e5c8bbcd28b4d6eb80f4ede64a05495.png)
如果私服中也没有找到那么就只能到中央仓库中查找了。
2.在中央仓库中查找:
网址:
http://mvnrepository.com/
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9yyyZ7Ww-1683810959914)(img/1536472944915.png)]](https://img-blog.csdnimg.cn/6efbe0be664c4322ab313d94cdd80f5c.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ky4DEDJI-1683810959914)(img/1536473010206.png)]](https://img-blog.csdnimg.cn/1e37d524fc8940b689d8f5dab002c1e3.png)
将以下坐标复制到pom文件中即可:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QjrC098o-1683810959915)(img/1536473048664.png)]](https://img-blog.csdnimg.cn/85f8410208d44af9bc0f9824891646cf.png)
pom文件中引入依赖后,会去私服或者中央仓库中下载依赖:如果项目结构的External Librarites中出现刚引入的依赖,则说明依赖引入成功。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h88iNVWm-1683810959915)(img/1536473173756.png)]](https://img-blog.csdnimg.cn/5de3edc3f63d4befad71e6b3415178b9.png)
3、maven插件
1问题演示
我们在运行javase项目的时候,发现控制台会显示一些1.5已过时的警告。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ZItda43-1683810959916)(img\image-20200225113113976.png)]](https://img-blog.csdnimg.cn/db2032ab01ff4cf18942606930067428.png)
说明:
当我们点击compile编译的时候发现maven编译的时候使用的插件是:maven-compiler-plugin:3.1:compile (default-compile) 。该插件默认编译的jdk版本是1.5.编译生成的.class文件,让idea中的jdk1.8运行,1.8的jdk运行1.5编译的class文件,会显示已过时字样。所以这里我们需要手动配置下jdk的编译版本,使用jdk1.8.
我们这里需要配置maven的插件。
2maven插件介绍
我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成。例如编译源代码是由maven-compiler-plugin完成的,但是这些插件都是maven默认的插件,如果需要配置自己的插件,则需要通过插件的坐标来引入插件。插件的坐标可以从maven官方提供的插件列表进行下载:
Maven官方有两个插件列表:
第一个列表的GroupId为org.apache.maven.plugins,这里的插件最为成熟,具体地址为:http://maven.apache.org/plugins/index.html
第二个列表的GroupId为org.codehaus.mojo,这里的插件没有那么核心,但也有不少十分有用,其地址为:http://mojo.codehaus.org/plugins.html
1.访问网址,找到maven插件,然后点击编译compiler
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z6DWxgF2-1683810959917)(img\image-20200225114734071.png)]](https://img-blog.csdnimg.cn/c2e7ad7e3d0b4e5cb9991fc96df2f8d1.png)
2.点击用量信息页
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JErOAQsE-1683810959918)(img\image-20200225115050256.png)]](https://img-blog.csdnimg.cn/eca3c97678b6491a8ce8bf327d666262.png)
3.复制插件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a0uhNxXj-1683810959919)(img\image-20200225115331773.png)]](https://img-blog.csdnimg.cn/6502500cceba47189dd76544f7dc50f4.png)
4.将上述复制的内容放到build标签里面
<!--插件管理-->
<build>
<plugins>
<!--编译插件:jdk1.8-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<!-- put your configurations here -->
<!--源码-->
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
5.清除target编译和运行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vgukQvzX-1683810959920)(img\image-20200225122433068.png)]](https://img-blog.csdnimg.cn/ac1d736359294f31b0d810cc6ba475f9.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GG6L9jTK-1683810959920)(img\image-20200225122249568.png)]](https://img-blog.csdnimg.cn/01777f7a1a7f49e4b4d9742dbe0ff0e1.png)
使用的编译插件是我们自己配置的版本。
直接运行java代码就不会出现警告信息了。jdk的编译和运行版本统一了。
3 编译插件 maven-compiler-plugin
<!--JDK编译插件-->
<!--编译插件:jdk1.8-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<!-- put your configurations here -->
<!--源码-->
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
说明:插件都要放在 plugins标签里面。
4 测试插件maven-surefire-plugin

maven的test指令运行测试代码存在中文乱码问题, 用这个插件可以解决
<!--test插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<forkMode>once</forkMode>
<argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>
</plugin>
附一:完整的pom.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itheima.sh.heima33</groupId>
<artifactId>maven-usermanager</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<!--
依赖管理:
1、导入依赖:
idea导入
私服搜索坐标
2、依赖范围设置
3、依赖版本统一维护
插件管理:
1、编译插件
-->
<!--依赖版本统一管理-->
<properties>
<junit.version>4.13</junit.version>
<servlet.version>3.0.1</servlet.version>
<jsp.version>2.3.3</jsp.version>
<beanutils.version>1.8.3</beanutils.version>
<commons.logging.version>1.1.1</commons.logging.version>
<jstl.version>1.2</jstl.version>
<log4j.version>1.2.17</log4j.version>
<mabatis.version>3.5.0</mabatis.version>
<mysql.version>5.1.18</mysql.version>
</properties>
<!--依赖管理:-->
<dependencies>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<!--<version>4.13</version>-->
<version>${junit.version}</version>
<!--范围:测试存在-->
<!--<scope>test</scope>-->
</dependency>
<!--servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
<!--编译 测试需要,运行时不需要-->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>${jsp.version}</version>
<scope>provided</scope>
</dependency>
<!--commons-beanutils-->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>${beanutils.version}</version>
</dependency>
<!--commons-logging-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>${commons.logging.version}</version>
</dependency>
<!--jstl-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mabatis.version}</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
<!--编译不需要。测试和运行需要-->
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
</dependencies>
<!--插件管理-->
<build>
<plugins>
<!--JDK编译插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<!-- put your configurations here -->
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>80</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
附二:清理maven仓库
初始情况下,我们的本地仓库是没有任何jar包的,此时会从私服去下载(如果没有配置,就直接从中央仓库去下载),可能由于网络的原因,jar包下载不完全,这些不完整的jar包都是以lastUpdated结尾。此时,maven不会再重新帮你下载,需要你删除这些以lastUpdated结尾的文件。如果本地仓库中有很多这样的以lastUpadted结尾的文件,可以执行如下脚本来删除:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HWjr1Ubb-1683810959922)(img\lastUpdated-1582625518983.png)]](https://img-blog.csdnimg.cn/1fb4d455e25d467cace2be64a1fc559e.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jcGtacue-1683810959923)(img\1536506855334-1582625518983.png)]](https://img-blog.csdnimg.cn/b7b73ab2e2514ee4abd7b91fbda4aab2.png)
在上面的bat文件上右键—》编辑 。修改文件:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-teOgtPlX-1683810959925)(img\1536506937924-1582625518983.png)]](https://img-blog.csdnimg.cn/94168997c3964cd880a7c302af82b39f.png)
修改完毕后,双击运行即可删除maven仓库中的残留文件。
附三:更新依赖索引
有时候给idea配置完maven仓库信息后,在idea中依然搜索不到仓库中的jar包。这是因为仓库中的jar包索引尚未更新到idea中。这个时候我们就需要更新idea中maven的索引了,具体做法如下:
打开设置----搜索maven----Repositories----选中本地仓库-----点击Update
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5zSwZBeg-1683810959926)(img\1537786634456-1582625518984.png)]](https://img-blog.csdnimg.cn/37bd042897934df5811f71295b138d69.png)
附四:JDK插件
<!--配置maven的插件-->
<build>
<plugins>
<!--配置的是jdk编译器-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<!-- put your configurations here -->
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
附五:配置idea模板
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aZSLhAyu-1683810959928)(img\image-20211105140857985.png)]](https://img-blog.csdnimg.cn/c5188f01add74c51a15c12739e65ff12.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SY6j4F68-1683810959929)(img\image-20211105140959904.png)]](https://img-blog.csdnimg.cn/59d32da6d37749289c3ff3db00208a2b.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rTzflvMY-1683810959930)(img\image-20211105141030259.png)]](https://img-blog.csdnimg.cn/32595c5078c04c818eda5df7953835c8.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-383Jp8oh-1683810959931)(img\image-20211105141111942.png)]](https://img-blog.csdnimg.cn/ad0a745d621b428e8365d83a4833366a.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gtIEcJy5-1683810959932)(img\image-20211105141314782.png)]](https://img-blog.csdnimg.cn/fb59be82b26846d8b5aa6afb71c412af.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ef4iBef6-1683810959933)(img\image-20211105141416865.png)]](https://img-blog.csdnimg.cn/31795bbbbafb4babaccf21a3c5489536.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h6kGHU58-1683810959934)(img\image-20211105141440585.png)]](https://img-blog.csdnimg.cn/38a7312ebaee4ed8bf343fde7576ddc8.png)
附六:如果每次都是到私服下载,不优先使用本地仓库
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AtwsdurP-1683810959935)(E:\itcast\就业班\数据库\新版\day06_Maven&Mybatis\01_课件\01-maven\img\image-20220121110115221.png)]](https://img-blog.csdnimg.cn/742f7a7dc78745d481c6eef9822a05ee.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B87wrgmn-1683810959936)(E:\itcast\就业班\数据库\新版\day06_Maven&Mybatis\01_课件\01-maven\img\image-20220121110203194.png)]](https://img-blog.csdnimg.cn/85ebb77cdd3e4e94a63585ce42bc124b.png)
-DarchetypeCatalog=internal
小结
第一章、Maven概述
1、maven是什么:软件-项目管理工具;
2、maven的作用:
【1】构建标准的项目:java,web
【2】管理项目的生命周期:
【3】maven管理项目中的jar包(依赖);
【4】maven管理插件;
3、maven的下载安装与配置:
【1】JAVA_HOME配置正确;
【2】MAVEN_HOME配置正确; mvn -v
第二章、maven仓库
【1】作用:存放jar包和插件;
【2】分类:
本地仓库:本地的一个文件夹
远程仓库:远程服务器上的一个文件夹
中央仓库:apache维护的仓库
私服:自己搭建的远程仓库
【3】仓库配置:
本地仓库配置:
私服配置:阿里云(外网),传智私服(局域网)
第三章、Maven项目创建-------重点
【1】把maven绑定到IDEA中:
file->other settings-->default setting 设置maven环境:maven_home,settings.xml
【2】使用IDEA创建maven项目:掌握
创建maven的java项目:普通项目 打包方式为jar
项目结构
创建maven的web项目: 打包方式为war
项目结构
【3】maven项目的生命周期:
1、clean:删除项目构建过程中生成的文件(target)
2、default:
创建==》编译==》测试==》打包===》安装==》部署上线
3、site:了解
【4】生命周期相关命令:命令调用maven的插件执行任务
mvn clean:清理
mvn compile:编译
mvn test:测试
mvn package:打包
mvn install:安装
第四章、maven应用详解 ---------重点
【1】依赖管理:
1、坐标:定位一个jar包在本地仓库中的位置
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
2、导入依赖:导入坐标
本地仓库导入: Alt+Insert
远程仓库搜索:中央仓库,私服搜索
【2】依赖配置:
1、依赖作用范围配置:maven有3套运行环境
编译环境 测试环境 运行环境(tomcat)
test - 是 - junit.jar
compile 是 是 是 90%的jar-默认的
runtime - 是 是 mysql驱动(实现JDBC结构)
provided 是 是 - servlet,jsp
system 是 是 -
2、依赖版本统一维护:
定义版本信息:
<properties>
<junit.version>4.12</junit.version>
</properties>
引用版本信息:
<version>${junit.version}</version>
【3】插件管理:
maven本身是一个插件库:默认的插件(版本低)
自己配置插件,覆盖默认的插件: 编译插件,测试插件,tomcat7插件



















