Maven
作用:管理Jar包
-MVC适合中小型项目,而大型项目分多模块,多个工程,需要使用Maven管理
-将所有jar包存放在中央仓库,本地只有一份
-jar包通常存在依赖关系,使用Maven会自动导入所需要的jar包
-Maven是自动化构建工具: 编译,测试,打包,部署
构建:
概念:构建就是Java代码、框架配置文件等其他资源文件、JSP页面和图片等静态资源作为“原材料”,去“生产”出一个可以运行的项目的过程。
构建的环节:
1)清理(clean):删除以前的编译结果,为重新编译做好准备。
2)编译(compile):将Java源程序编译为字节码文件。
3)测试(test):针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
4)报告:在每一次测试后以标准的格式记录和展示测试结果。
5)打包(package):将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对应war包。
6)安装(install):在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。(主要是看本地有没有,更改jar包后要重新安装)
7)部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行。
-Maven 是自动化构建
Maven的概念
1)POM (项目对象模型)
(核心:学习maven就是学习pom.xml的配置)
2)约定的目录结构
- 因为有了约定的目录结构才能实现自动化构建
Hello
src
- main
- - java
- - resources
- test
- - java
- - resources
pom.xml
3)坐标
使用如下三个向量在Maven的仓库中唯一的确定一个Maven工程。
[1]groupId:公司或组织的域名倒序+当前项目名称
[2]artifactId:当前项目的模块名称
[3]version:当前模块的版本
4)依赖管理
直接依赖和间接依赖:
如果A依赖B,B依赖C,那么A→B和B→C都是直接依赖,而A→C是间接依赖。
当存在间接依赖的情况时,只有当间接依赖的jar包的依赖范围为compile时,主工程才能对间接依赖的jar进行访问。
只有compile才有可见性。
范围:
1)compile
main,test,部署到服务器
例如:对Hello的依赖。主程序、测试程序和服务器运行时都需要用到。
2)test
test
例如:对junit的依赖。仅仅是测试程序部分需要。
3)provided
main,test
例如:servlet-api在服务器上运行时,Servlet容器会提供相关API,所以部署的时候不需要。
4)其他:runtime、import、system等。
解决依赖
Maven导入jar包依赖的原则:
-
最短路径原则
HelloFriend继承Hello,无论MakeFriend继承HelloFriend还是Hello,按最短路径原则,继承短的(就是HelloFriend)
-
先输入原则
这里“声明”的先后顺序指的是dependency标签配置的先后顺序(谁先写依赖谁)。
properties
// 统一管理(自定义标签,为了方便改)
//引用 $ 加大括号
5)仓库管理
6)生命周期
Clean lifecycle
Default lifecyle
Site lifecycle
7)继承
子工程继承父工程的依赖
1)指定打包方式为pom(如果该工程为父工程必须设置为pom)
com.atguigu.maven
Parent
pom
1.0-SNAPSHOT
2)
子工程引用父工程,使用
com.atguigu.maven
Parent
1.0-SNAPSHOT
../Parent/pom.xml
3)在父工程中管理依赖,将Parent项目中的dependencies标签,用dependencyManagement标签括起来
junit
junit
4.0
test
4)在子项目中重新指定需要的依赖,删除范围和版本号
junit
junit
8)聚合
Maven的继承特性:将各个模块相同的依赖和插件配置提取出来,在简化POM的同时还可以促进各个模块配置的一致性。
Maven的聚合特性:可以帮助我们把项目的多个模块聚合在一起,使用一条命令进行构建,即一条命令实现构建多个项目;
Maven的聚合特性能够帮助把项目的各个模块聚合在一起构建。
../MakeFriend
../OurFriends
../HelloFriend
../Hello
Maven可以根据各个模块的继承和依赖关系自动选择安装的顺序
安装Maven 和idea配置
注意
1)配置环境变量
2)pom中配置阿里云镜像
3)配置本地仓库
4)idea中注意 家目录,配置文件目录和本地仓库的目录
5)runner对勾也勾上去,详见指南
6)setting 设置单前工程
settings for new project 设置所有新建工程
基本命令
有个博主讲Maven的好
https://blog.csdn.net/qq_25827845/article/details/83867717