Maven

发布于:2025-07-11 ⋅ 阅读:(21) ⋅ 点赞:(0)

一.基础知识

安装插件:

依赖的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> 标签。

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


网站公告

今日签到

点亮在社区的每一天
去签到