- 前言须知:
- 你还有用过其它构建工具吗? 和maven有啥区别?
- Maven好处、作用
- Maven核心概念(尽量掌握)-----生命周期、依赖、仓库、插件等
- maven下载、安装、配置、验证
- maven解压及环境变量配置
- Maven工程约定目录结构
- 编译所有java文件命令:mvn compile
- Maven仓库是什么(如何修改)、下载地址
- 配置Maven工程的基础」DK版本
- Maven中的pom文件---项目对象模型--必须掌握
- Maven中的依赖范围
- Maven常用命令
- Maven插件
- 单元测试
- 配置Maven插件
- maven插件自动生成API文档
- 快速定位解决Maven依赖冲突
- 搭建Maven私服
- Maven在IDEA中的使用(必需学会)
- Maven常用设置
- 深入了解配置文件settings.xml、pom.xml
初学知道这么些内容就差不多了,等有时间在深入好好了解一下:
下面先了解一下常见的基本概念
Maven约定的工程目录:
Java开发领域普遍认同的一个观点:约定>配置>编码(能用配置解决的问题就不编码,能基于约定的就不配置)
这个面试可能会问到
https://blog.csdn.net/qq_39213969/article/details/103199817
Maven好处、作用我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的。
下载、安装、配置、验证的流程:
也可参考我之前的博客(IDEA)安装配置maven项目准备阶段
官网下载地址
下面是最新的,目前用的较多的稳定版本是3.3.9
更多版本下载戳我
配置全局环境变量原因: 我们需要在指定pom文件的那一级目录运行maven 命令才行,不然报错没有这个pom文件,如果是聚合工程它的没个pom文件路径都不一样,因此配置全局变量重要性不言而喻。
环境变量这我提一嘴,这块window7/8跟window10有点不一样,
你是win7 win8 就是你打开path 是好多内容 这里 ;表示结束 你就在;的后面写%M2_HOME%bin; 即可
window10:
在命令行窗口查看Maven版本时,一般可能会出现如下问题原因:
所以必须要有JAVA_HOME
温馨提醒必要时以管理员身份运行cmd
1、配置前后不一致,拼写错误(你写的名称的跟Path保持一致)
2、你没配置JAVA_HOME
前面两个错误参考我之前博客地址
3、出现 Error: JAVA_HOME is set to an invalid directory.的解决方法(本人亲自遇到)
这个就是你jdk配置的问题:建议参考我上面博客地址,删除JAVA_HOME重新添加
记得重启cmd,有时候需要重启
其他参考:
直接复制jdk放在d盘, 路径就没有空格的问题了
或者通过命令查看
这块直接生敲一个简易maven工程,没有用开发工具,建议看一看,先学难的操作,使用工具的操作原理你就能快速明白
视频地址
注意命令执行的位置,pom的那级目录,否则不生效
执行命令后会下载东西,时间不等(几分、半小时)取决于你的网络
下载的是jar文件,里面全是java类。第一次要下载东西所以慢,之后在执行编译就不需要在下载就非常快。(仓库有对应的东西了就不在下载了)
运行验证一下
我们上面说了,Maven默认仓库地址如下:
修改仓库地址如下:打开你的settings.xml文件
建议先备份,凡是修改都建议,给自己留条后路
(也可以不用创建此文件夹,运行mav命令时候会给你自动创建)
那么仓库是什么、放什么东西
而且下载的时候如果我们本地仓库已经有对应jar包文件,它就不用在去下载了
Maven中央仓库地址
nexus-aliyun
central
Nexus aliyun
http://maven.aliyun.com/nexus/content/groups/public
配置Maven工程的基础」DK版本
这个有两种方式,你可以在此xml配置如下
jdk-1.8 true 1.8 1.8 1.8 1.8
也可以在pom.xml
构建项目、管理依赖都是通过此文件完成的
Maven中的坐标
为什么不需要,比如说servlet,我们把项目方法tomcat运行,tomcat里面人家有个lib目录,里面已经提供了对应的jar,所以就不需要打包进去。也就是说最终服务器提供了的jar包是不需要的
体验命令请参考下面:单元测试(务必要看哦,那可是核心)
Maven插件 单元测试
下面注意一下路径保持一致(毕竟是生敲的,用IDEA就没这么麻烦)
看下图它用到了一个删除插件 ----删除位置Hello下的target 下面展示的很清楚
看下面这个编译,它用了两个插件
第一个插件,它实际上就是把我们主程序下那个resources下的所有配置文件copy到target/classes下
第二个插件 把编译的程序都放到target/classes下
编译成功只能说你编译了,不能证明你的程序是正确的,因为你还没执行你的方法,下面进行测试
编译测试的命令 mvn test-compile 跟上面编译的插件用的都是一个,只是编译的目标不一样
至于这里为什么会出现4个插件我下面在解释,注意往下看
上面表示所有的编译工作已经准备好了,该进行测试了
执行命令后发现编译了很多次(很多个插件)
原因:当你执行某一阶段命令,前面阶段的命令都会执行,
所以说如果你前面的命令报错,后面的命令更执行不了
下面会展示测试结果:执行方法的数量,是否成功、报错、跳过、时间
最终在返回测试结果
为了观察我们在之前的test在添加一个方法
重新执行命里 mvn test (这里不用执行 mvn test-compile我想你应该懂了)
测试没通过,你代码就没通过,测试结果会生成一个报告
把你的测试结果生成一个文件,便于查看
为了后续命令测试这里要改正确(你前面的命令报错,后面的命令更执行不了)
打包:其实就是把你项目中的类啊、配置文件啊,把它形成一个压缩文件,这样的话就一个文件,空间也小了,复制啥的也就方便了,便于管理、项目部署。
打包就是一个压缩文件的制作过程
但是你注意点开我们的这个jar对比着看看,它只有主程序里对应的内容,也就是它的目录结构只是 src/main/下的所有目录文件。
安装:就是把你上面打包的那个文件安装到本地仓库里面去,
安装到仓库中,你的别的项目就可以用它了,
前面是仓库地址 后面是pom文件坐标对应的文件夹
那其他项目如何使用我安装的jar呢,把你新项目的pom文件添加个坐标依赖就可以使用了
maven编译、打包啥的用的都是一个个插件,通过前面的命令你也能看出来。当然了你也可以配置你需要的maven插件,配置的地方在:pom.xml文件
注意这块maven插件很多的,你也不用记,直接百度你想用的插件,复制过来改改就行
maven 插件
如编译插件:
org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.8 1.8 UTF-8
源码打包插件
org.apache.maven.plugins maven-source-plugin 3.6.0 package jar-no-fork
src/main/java **/*.xml
生成jar包插件(agent开发使用)
org.apache.maven.plugins maven-jar-plugin 3.0.2 true com.kaka.jtest.jdk.java.lang.instrument.VMAgent com.kaka.jtest.jdk.java.lang.instrument.hotswap.ReplaceAgent true true D:Javajdk1.8.0_31libtools.jar
生成war包插件
maven插件自动生成API文档maven-war-plugin 2.6 webapp false
时间关系------感兴趣自己找视频网址学
快速定位解决Maven依赖冲突https://blog.csdn.net/weixin_41973131/article/details/91891652
更多内容参考:
搭建Maven私服时间关系------自己找视频网址学
Maven在IDEA中的使用(必需学会)上面的这些命令内容你可以不会,只要在IDEA会点一点就行,但是它本质还是执行这些命令,所以尽量还是掌握一下命令的形式。
打开IDEA
两处都进行如下设置
加快项目创建 -DarchetypeCatalog=internal
每次创建项目时, IDEA 要使用插件进行创建,这些插件当你创建新的项目时,它每次都会去中央仓库下载,这样使得创建比较慢。应该创建时,让它找本地仓库中的插件进行创建项目。
IDEA创建Maven工程
先创建一个空的工程
这里使用模板创建一个普通java项目
注意下面这一块根据不同IDEA版本可能有差异,有的会让你一个个填写,有的写好你自己修改
第一种情况:
第二种情况:
可以在这里修改好
如果你上面没修改也可以通过如下方式修改
创建好后,模板已经为我们创建了对应的模板目录、文件,当然比如我们用的普通java项目模板,它没有给我们创建resources目录,如果你需要就自己创建目录,然后再标识一下即可
这块内容简单我不赘述,感兴趣请看对应视频
IDEA创建WEB工程
这块不懂得可以去看看视频我就不赘述了。
这里提示个技巧: 如你web项目打包会是一个war的压缩文件,为了方便查看里面的内容,你copy一份修改下后缀名如.rar,查看就很方便。
Maven常用设置
指定资源插件
上面resources作用
我这里大白话说一下: 就是你执行命令mvn compile,它默认只会处理主程序里的内容,
2个插件,一个编译java目录下的所有java文件,非java文件不编译,另一个插件复制resources下的所有文件。现在如果你需要把非java文件也编译那就得在
Maven常用的核心配置文件包括全局配置文件settings.xml和项目配置文件pom.xml



