项目构建的各环节
1.清理:将以前编译得到的class文件删除
2.编译:将java源程序编译为字节码文件
3.测试:自动调用junit来测试
4.报告:测试程序的结构
5.打包:将动态web程序打包成war包,java工程打包为jar包
6.安装:将打包得到的文件复制到仓库中
7.部署:将生成的war包复制到Servlet目录下,使其可以运行
Maven核心概念
1.约定的目录结构(重要)
2.pom(重要)
3.坐标(重要)
4.依赖(关键)
5.仓库
6.生命周期/插件/目标
7.继承
8.聚合
一、Maven目录结构
1.根目录:工程名
2.scr:放置源码
3.pom.xml文件:Maven工程的核心配置文件
4.main目录:存放主程序
5.test目录:存放测试文件
6.java目录:存放java源程序
7.resources目录:存放框架或其他工具的配置文件
约定>配置>编码
二、maven常用命令
1.mvn clean:清理
2.mvn compile 编译主程序
3.mvn test-compile:编译测试程序
4.mvn test:执行测试
5.mvn package:打包
三、Maven的坐标
1.groupId定义了项目属于哪个组,一般为域名反写+项目名,如com.a.b,就是a公司的b项目
2.artifacted,项目在组中的唯一ID,模块名称,如b-damain,保存的就是DO文件。
3.version,指定了项目当前版本
Maven工程的坐标与仓库路径的对应关系,比如
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.8.RELEASE</version>
位置为org/springframework/spring-core/5.2.8.RELEASE/spring-core-5.2.8.RELEASE.jar
四、仓库的分类
1.本地仓库
2.远程仓库,
(1)私服:搭建在局域网范围内,为局域网范围内的所有Maven工程服务
(2)中央仓库:架设在Internet上,为全世界所有Maven工程服务
(3)中央仓库镜像:为了分担中央仓库流量,提升用户访问速度
仓库保存的内容:Maven工程
(1)Maven自身所需的插件
(2)第三方框架或工具的jar包(第一方是JDK,第二方是自己)
(3)我们自己开发的Maven工程
五、依赖
maven解析依赖信息时会到本地仓库查找被依赖的jar包,对于我们自己开发的Maven工程,使用install命令安装就可以进入仓库
依赖的传递性:依赖的包会将其依赖传递过来,非compile的包不会传递
依赖原则:解决工程之间的jar包冲突问题
统一管理依赖版本
1.使用properties标签内使用自定义标签统一声明版本号
2.在需要统一版本的位置,使用¥引用声明的版本号
这里值得一提的是(在实际使用遇到的问题),在一个项目依赖另一个项目install生成的包的时候,打包的项目要注意其打包方式,这里,打包了springboot项目,在添加依赖后,一直无法引用类,后来才发现,必须使用普通的maven打包,在build标签里面配置,这样就能使用了。
六、继承
1.使用背景:由于test范围的依赖不能传递,必然会分散在各个模块工程中,很容易造成版本不一致。
2.解决思路:将test依赖统一提取到父工程中,子过程声明依赖不指定版本,以父工程统一设定为准
3.操作步骤:
(1)创建一个maven工程作为父工程,注意打包方式pom
(2)在子过程中声明对父工程的引用
(3)将子过程的坐标与父工程中重复内容删掉
(4)在父工程中统一junit的依赖<dependencyManagement>
(5)在父工程删除junit版本号部分