一.基础知识
安装插件:
依赖的jar包是如何下载的:
但是中央仓库一般是在国外的,下载比较慢,所以我们会引入第三者-----远程仓库(私服)
Maven相关配制:
配置maven的JRE
配置java语言的字节码版本
常见标签的认识:
三个标签介绍:
<groupId>:定义当前Maven项目隶属组织名称(以我看到的简单说就是在本地仓库的那个文件路径)
<artifactId>:定义当前Maven项目名称(以我看到的简单说就jar包是文件名)
<version>:定义当前项目版本号
<packaging>:
指定项目的打包类型,常见的打包类型包括:①
jar
:默认值,表示打包成 JAR 文件。②
war
:表示打包成 WAR 文件(用于 Web 应用)。③
pom
:表示该项目是一个聚合项目(用于管理其他模块)。<modelVersion>:告诉 Maven 解析器使用哪个版本的 POM 模型来解析当前文件
如何导入maven项目:
打开项目所在的磁盘文件,然后我们可以在电脑中把我们需要的maven项目复制进这个文件目录下
方式1:使用Maven面板,快速导入项目
方式2:使用idea导入模块项目
删除模块,但是在磁盘文件中没有删除
二.依赖管理
1.依赖配置
2.依赖传递
projectA依赖了projectB。对于projectA 来说,projectB 就是直接依赖。而projectB依赖了projectC及其他jar包。 那么此时,在projectA中也会将projectC的依赖传递下来。对于projectA 来说,projectC就是间接依赖。
依赖排除:
排除前
排除后
3.依赖范围
在项目中导入依赖的jar包后,默认情况下,可以在任何地方使用。 如果希望限制依赖的使用范围,可以通过<scope>标签设置其作用范围。
作用范围:
主程序范围有效(main文件夹范围内)
测试程序范围有效(test文件夹范围内)
是否参与打包运行(package指令范围内)
scope值 | 主程序 | 测试程序 | 打包(运行) | 范例 |
---|---|---|---|---|
compile(默认) | Y | Y | Y | log4j |
test | - | Y | - | junit |
provided | Y | Y | - | servlet-api |
runtime | - | Y | Y | jdbc驱动 |
4.生命周期
三个声明周期
我们看到这三套生命周期,里面有很多很多的阶段,这么多生命周期阶段,其实我们常用的并不多,主要关注以下几个:
• clean:移除上一次构建生成的文件
• compile:编译项目源代码
• test:使用合适的单元测试框架运行测试(junit)
• package:将编译后的文件打包,如:jar、war等
• install:安装项目到本地仓库
说明:在同一套生命周期中,我们在执行后面的生命周期时,前面的生命周期都会执行。
思考:当运行package生命周期时,clean、compile生命周期会不会运行?
clean不会运行,compile会运行。 因为compile与package属于同一套生命周期,而clean与package不属于同一套生命周期。
三.分模块设计(自己的模块相互依赖)
把项目分成不同的模块,然后需要对象引入maven的地址就可以了。
四.继承与聚合(更好的设计项目的结构以及打包)
继承作用:简化依赖配置、统一管理依赖(父类有的依赖都会继承到子类,若父子工程都配置了同一个依赖的不同版本,以子工程的为准)
聚合作用:快速构建项目(无需根据依赖关系手动构建,直接在聚合工程上构建即可)
1.继承关系实现
我们只需要在子工程里面写<parent>标签就可以了
两种项目格式:
2.版本锁定
作用:因为有的子模块需要某些依赖,但是有的不要,所以这种种依赖不能直接放在父工程的xml文件中,但是如果写在每个子模块里面如果需要改版本,就会非常麻烦,所以有了<dependencyManagement>这个标签用来管理。
在父工程中所配置的
<dependencyManagement>
只能统一管理依赖版本,并不会将这个依赖直接引入进来。 这点和<dependencies>
是不同的。子工程要使用这个依赖,还是需要引入的,只是此时就无需指定
<version>
版本号了,父工程统一管理。变更依赖版本,只需在父工程中统一变更。
自定义属性/引用属性:
上面讲的是在父子工程之间管理依赖版本,这个是在单个pom文件中管理依赖版本。
这里要使用<properties>标签。
3.聚合实现
作用:没有聚合工程的时候我们要手动一个模块一个模块的打包,有了之后我们可以在父工程一键打包,需要使用 <modules> 标签。
聚合工程中所包含的模块,在构建时,会自动根据模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写位置无关。