一、jar包管理

1.引入依赖

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>

<scope>标签用来指定依赖范围

(1)compile: 编译依赖范围。 

 默认的依赖范围,使用此依赖范围对编译、测试、运行都有效。

(2)test: 测试依赖范围。

 使用此依赖范围只对测试有效。

(3)provided: 已提供的依赖范围。

 使用此依赖范围会对编译和测试有效,对运行无效。

(4)runtime: 运行时的依赖范围。

 使用此依赖范围会对测试和运行有效,对于编译无效。

(5)system: 系统依赖范围。

 和provided依赖范围完全一样。

(6)import: 导入依赖范围。

 此依赖范围只会在<dependencyManagement>标签中使用,将依赖一个POM类型的项目中的所有依赖全部导入到目标项目中来。要用到此依赖范围必须要声明<type>pom</type>。

注:type标签用来指明依赖需要引入的类型(jar、war、pom等),默认为jar。

2.排除依赖

pom中引入的第三方依赖中还依赖了其他的第三方依赖,maven会将所有直接依赖和间接依赖的jar包都下载到本地,如果我们不需要某个间接依赖的jar包,需要将该jar包依赖排除

<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client</artifactId>
    <version>1.4.2</version>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>

3.依赖传递

<optional>标签不设置默认为false,表示传递依赖;true表示不传递依赖

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <optional>true</optional>
</dependency>

4.模块聚合

<!--聚合的模块-->
<modules>
        <module>dubbo-base</module>
        <module>dubbo-framework</module>
        <module>dubbo-config</module>
        <module>dubbo-registory</module>
        <module>dubbo-core</module>
        <module>dubbo-test</module>
</modules>
<!--打包类型定-->
<packaging>pom</packaging>

直接对打包类型为pom的模块进行生命周期的管理,Maven会自动帮我们管理聚合的所有模块的生命周期,操作顺序跟依赖顺序有关系

5.模块继承

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.14</version>
    <relativePath/>
</parent>

通过模块继承可以实现在子工程中沿用父工程中的配置,在父工程中定义统一的依赖管理,这样可以避免项目构建时出现依赖冲突问题

6.这里推荐一个常用的idea插件Maven Helper

下载安装

总结maven的一些知识_maven

进入Dependency Analyzer界面

总结maven的一些知识_maven_02

总结maven的一些知识_maven_03

当我们解决依赖冲突时,可以按下图步骤点击Exclude,插件会自动在我们的pom文件中对应的位置添加<exclusion>的相关代码,快速的进行依赖排除

总结maven的一些知识_maven_04


二、maven生命周期

1.idae中体现的maven生命周期

总结maven的一些知识_maven_05

clean(清理):清理本地的target目录

validate(校验):校验项目是否正确并且可以完成项目的构建过程

compile(编译):编译项目的源代码

test(测试):使用合适的单元测试框架运行测试

package(打包):将编译后的代码打包成可分发格式的文件

verify(验证):运行任意的检查来验证项目包有效且达到质量标准

install(安装):安装项目包到本地maven仓库,这样项目包可用作其他本地项目的依赖

site(站点):生成项目的站点文档

deploy(部署):将最终的项目包复制推送到远程仓库中

注:在Idea中点击这几个生命周期时,Maven会自动将之前所有的生命周期都执行一遍


本次先总结到这里,之后有新的内容随时补充。