打卡maven学习笔记
学习地址:https://study.163.com/course/courseMain.htm?courseId=1005828004
网易云课堂,颜群老师,maven课程。讲解的还不错。1.5/1.75倍速,一天半左右能看完
1.Maven的作用
- 增加第三方Jar
- jar包之间的依赖关系 (自动关联所依赖的jar包,并且不会冲突)
- 将项目拆分成若干个模块
2.Maven的概念
- 是一个基于Jave平台的自动化构建工具(make-ant-maven-gradle)
3.Maven的功能
- 清理:删除编译的结果,为重新编译做准备。
- 编译:java --> class
- 测试:针对于项目中的关键点进行测试,也可以用项目中的代码去测试开发代码
- 报告:将测试结果进行显示
- 打包:将项目中包含的多个文件压缩成一个文件,用于安装或部署。(java项目-jar包,web项目-war包)
- 安装:将打成的包放到 本地仓库,供其他项目使用
- 部署:将打成的包放到 服务器上准备运行
- 将java、js、jsp等哥哥文件进行筛选、组装 变成一个可以直接运行的项目
4.maven约定的目录结构
项目
- src
– main
– java :程序功能代码(java代码)
– resources :资源代码、配置代码
– test
– java :java测试代码
– resources 测试代码所用资源
- pom.xml :项目对象模型
├─ src
│ ├─ main
│ │ ├─ java 程序功能代码(java代码)
│ │ ├─ resources 资源代码、配置代码
│ │
│ ├─ test
│ │ ├─ java java测试代码
│ │ ├─ resources 测试代码所用资源
│ │
├─pom.xml 项目对象模型
5.- maven settings.xml配置
<groupId>域名反转.大项目名</groupId>
<artifactId>子模块名</artifactId>
<version>当前项目版本号</version>
<groupId>com.rz.maven</groupId>
<artifactId>HelloWorld</artifactId>
<version>0.0.1-SNAPSHOT</version>
在maven的项目中,如果要使用一个当时存在的jar或模块,则可以通过依赖实现(去本地仓库、远程仓库去寻找)
执行maven,必须在pom.xml所在目录中执行
6.Maven的常见命令操作
- mvn -v 查看maven版本
- mvn compile 编译
- mvn test 测试
- mvn package 打包(jar、war)
- mvn clean 删除target
- mvn install 安装jar包到本地仓库中 放入的位置是通过gav决定的。
- mvn compile(默认)
- mvn test
- mvn provided
7.在myclipse中创建maven工程
1.配置maven:
ii. 配置maven版本
iii.配置maven本地仓库-设置setting.xml并指定路径
iiii. 在myclipse中编辑完pom.xml依赖后,需要maven-update project之后才能正常使用
2. 执行maven
i. 选择pom.xml
8.maven的生命周期
生命周期和建构关系
3个阶段:
-
clean lifecycle:清理
-
default lifecycle:默认
-
site lifecycle:站点
9. 依赖的范围和依赖的有效性 jar包的dependency-scope
编译、测试、运行
compile(默认范围) 编译、测试、运行都有效
provided 在编译和测试时有效
runtime 在测试和运行时有效
test 只在测试时有效
system 在编译和测试时有效,与本机系统有关,可移植性差
- 排除依赖
<exclusions>
<exclusion>
<groupId>XXXXX</groupId>
<artifactId>XXXXX</artifactId>
</exclusion>
</exclusions>
-
多个maven之间的依赖 a->b
1.将b项目install到本地仓库
2.在a项目的pom.xml中通过gav引入依赖
3.依赖的传递性 A.jar -> B.jar -> C.jar - 要使A.jar->C.jar - 当且仅当B.jar -> C.jar的依赖范围是compile
4.路径优先原则:为了防止依赖冲突- a.路径最短优先原则
- b.路径长度相同
- i.(同一pom文件中两个不同版本的依赖。后面覆盖前面的)
- ii.如果是不同的pom.xml中油两个相同的依赖(优先);则先声明的会覆盖后声明的。
(JDK只能识别构建路径(source folder)中的源码)
5.同一项目的jdk版本
-
build path:删除旧版本 增加新版本
右键项目-属性-project Factors -java version改版本 -
通过maven同一版本 – pom配置profiles
10.打包方式:
java工程 – jar
web项目 – war
父工程 – pom
11.继承实现步骤:
1.建立父工程:父工程的打包方式为pom
2.在父工程的pom中编写依赖
3.在子工程中继承父工程
1.加入父工程坐标gav
2.当前工程的pom.xml到父工程的pom.xml
3.声明需要使用到父类的哪些jar包(junit) – 只需要ga
12.聚合
-
非聚合实现: maven项目能够识别的:自身包含、本地仓库中的
maven2依赖于maven1,则在执行时:必须先将maven1加入到本地仓库(install)之后才能执行maven2
以上前置工程的install操作,可以交由“聚合”,一次性搞定 -
聚合的使用:
在一个总工程中配置聚合 -只能配置在(打包方式为pom工程)的maven工程中
// 配置聚合,避免牵制工程的install操作
// 项目的根路径
…/maven1
…/maven2
-
概念:
聚合:maven将一个大工程拆分成若干个子工程(子工程)
聚合可以将拆分的多个子工程合起来
继承:父工程 -> 子工程(可以通过父工程,通过管理工程版本号)
13. 部署web工程:war
通过maven直接部署运行web项目:
a.配置cargo
b.maven命令:deploy