学习Maven目的:
1.构建
以后工作后,我们不会做一个完整的项目,只会做一个个模块单元,然后组合。组合不一定在你的电脑上,我们一般是打包提交,这时候就需要一个工具帮我们把项目构建
2.依赖(jar)
jar管理,解决jar过多的问题(maven是通过pom.xml直接导入,不需要在复制粘贴WEB-INF/lib包下),以及jar直接依赖的问题(导入一个你需要的jar,就必须也要导入有它所依赖的jar)
Maven是什么?
1.概念:一个apache专门为Java项目开发的构建和依赖管理的工具
2.构建
2.1概念:把原材料(xml,图片,源码等)生成成成品(可运行的项目)的过程
2.2 过程(7):
清理:清除上次构建的结果,为下次做出准备
编译:java源码--->class字节码的过程
测试:运行原本自带的测试程序
报告:对测试的结果生成一个报告信息
打包(2)
java工程 --->jar包
web工程--->war包
安装:安装到maven仓库(本地仓库)中--->手动
部署:将打好的jar或者war包部署到服务器上面-->上线
3.依赖
依赖jar的下载(中央仓库https://mvnrepository.com/---->本地maven仓库)
依赖有传递性 (A依赖B,B依赖C----> A依赖C)
依赖冲突解决(mave配置可以控制让某些依赖不传递)
4.工作机制
安装Maven
1.下载文件注意:解压到非中文,没有空格的目录下
链接:https://pan.baidu.com/s/1jVKh6xQS8rRE4cbYlq59Ag
提取码:0303
2.配置环境变量(二选一)
绝对路径:在PARH中 -->解压的文件到bin目录
相对路径:创建一个Maven_HOME--->bin目录的上一级;在PATH中--->%Maven_HOME%\bin
验证:cmd中输入 mvn -v
核心概念
1.坐标
groupId:公司或组织域名的倒写
artifactId:项目名或者模块名
version:版本号(SNAPSHOT--->不稳定版;RELEASE--->正式版本)
2.pom.xml--->管理jar
3.约定目录结构(约定大于配置)
4.标准的坐标写在pom.xml里面--->里面
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
5.常用命令(节选):(必须在pox.xml目录下的cmd输入)---->对应的是概念里面的过程
Maven的了解
1.创建maven工程
https://blog.csdn.net/shtxk/article/details/118226585
2.测试maven的范围依赖 (compile/test/provided)
2.2 总结:
1.test只能scr\test\java文件中使用
2.compile可以在任何地方使用(不写默认为compile)
3.provided可以在项目中使用,却不能在服务器中使用,因为服务器提供了相对应的jar
3.依赖的传递性
compile范围的jar可以传递,provided和test范围内的jar只能明确配置后才可以传递
依赖的冲突的两条原则:1.线路最短者优先;2.先声明者优先
4.pom.xml的认识
<!-- 当前Maven工程的坐标-->
<groupId>com.atgu</groupId>
<artifactId>A</artifactId>
<!--当前工程的打包方式pom/jar/war -->
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<!--聚合-->
<!-- 子工程的坐标 -->
<!-- 如果子工程坐标中的groupId和version与父工程一致,那么可以省略 -->
<modules>
<module>B</module>
</modules>
<!-- 使用excludes标签配置依赖的排除 -->
<exclusions>
<!-- 在exclude标签中配置一个具体的排除 -->
<exclusion>
<!-- 指定要排除的依赖的坐标(不需要写version) -->
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
<!--自定义属性标签-->
<properties>
<!--自定义标签,用于下给对应标签的版本数据-->
<junit.version>5.7.1</junit.version>
</properties>
<!--工程依赖的复标签,里面可以存单依赖标签(自己写的maven项目也是在里面依赖的)-->
<dependencies>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<!--依赖的单标签-->
<dependency>
<!--公司或组织id-->
<groupId>org.junit.jupiter</groupId>
<!--项目名或模块名-->
<artifactId>junit-jupiter-api</artifactId>
<!--版本号 RELEASE表示正式版本;SNAPSHOT表示快照版本
唯一可以修改的值为了控制我们把它提出,用变量表示-->
<version>${junit.version}</version>
<!--依赖的范围 complie/provided/test-->
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.atgu</groupId>
<artifactId>D</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
Maven仓库管理jar的问题
1.问题:下载失败或者下载不完全(jar包的扩展名是xxx.jar.lastUpdated结尾的)
云盘里的脚本工具(clearLastUpdated.bat文件)
2. 问题:下载成功数据丢失
建议直接删除,重新下载
思维导图
链接:https://pan.baidu.com/s/1cpcnq3CnOK9LXBxcjoZuIg
提取码:0303