Maven

一.基础知识

安装插件:

依赖的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>标签设置其作用范围。

作用范围:

  1. 主程序范围有效(main文件夹范围内)

  2. 测试程序范围有效(test文件夹范围内)

  3. 是否参与打包运行(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> 标签。

聚合工程中所包含的模块,在构建时,会自动根据模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写位置无关。

相关推荐
guo_wen_qiang4 分钟前
项目使用sentinel遇到的问题
java·sentinel
CarIise9 分钟前
IDEA与Maven基础课堂笔记
java·intellij-idea·caffe
小溪学编程15 分钟前
C语言篇:枚举类型
java·c语言·前端
云和数据.ChenGuang24 分钟前
JAVAEE AI工程师路线图
java·人工智能·java-ee·fastapi·springai·langchain4j
2601_9628857224 分钟前
如何用 Python 统计 A 股连续涨停(几连板)?
java·linux·python
大圣编蚕1 小时前
Spring AOP 失效排查:从原理到实战的完整指南
java·后端·spring
EatFan1 小时前
MCP 从概念到落地:Java(Spring AI Alibaba)与 .NET 双栈接入实操对比
java·人工智能·后端·spring·.net·java后端·mcp
专业程序开发源1 小时前
springboot全民健身和饮食健康管理系统29158-计算机课程设计、毕业设计
java·spring boot·后端·python·django·php·课程设计
ym hyd 1111 小时前
汽车零部件缺陷管理系统源码 Java+SpringBoot+Vue3 前后分离
java·vue.js·spring boot·汽车·毕设
Wang's Blog1 小时前
Java框架 SpringCloud 快速入门: 从服务拆分到注册中心的落地路线
java·开发语言·spring cloud