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> 标签。

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

相关推荐
CodeCaptain5 分钟前
nacos-2.3.2-OEM与nacos3.1.x的差异分析
java·经验分享·nacos·springcloud
Anastasiozzzz1 小时前
Java Lambda 揭秘:从匿名内部类到底层原理的深度解析
java·开发语言
骇客野人1 小时前
通过脚本推送Docker镜像
java·docker·容器
铁蛋AI编程实战1 小时前
通义千问 3.5 Turbo GGUF 量化版本地部署教程:4G 显存即可运行,数据永不泄露
java·人工智能·python
晚霞的不甘1 小时前
CANN 编译器深度解析:UB、L1 与 Global Memory 的协同调度机制
java·后端·spring·架构·音视频
SunnyDays10111 小时前
使用 Java 冻结 Excel 行和列:完整指南
java·冻结excel行和列
摇滚侠2 小时前
在 SpringBoot 项目中,开发工具使用 IDEA,.idea 目录下的文件需要提交吗
java·spring boot·intellij-idea
云姜.2 小时前
java多态
java·开发语言·c++
李堇2 小时前
android滚动列表VerticalRollingTextView
android·java
泉-java2 小时前
第56条:为所有导出的API元素编写文档注释 《Effective Java》
java·开发语言