一篇就会的Maven入门介绍

1、Maven是什么

简单来说就是 统一管理jar包的工具

2、Maven的坐标

那maven是如何来帮我们统一管理jar包的呢,和传统的导入jar包不同,maven项目在pom.xml中通过依赖和坐标帮我们进行jar包管理。

坐标的组成:公司名加组织名+项目名+版本号

  • GroupId: 依赖的组织或项目的唯一标识符。
  • ArtifactId: 依赖项目的唯一标识符。
  • Version: 依赖项目的版本号。

3、Maven的仓库和镜像

maven的仓库则存储了我们通过坐标获取到的jar包(maven获取jar包时首先在本地仓库找,没找到再去远程仓库找)

仓库:

本地仓库:位于本地机器上的项目仓库。默认情况下,Maven会将下载的依赖项存储在本地仓库中,并在后续构建过程中重用它们。

配置本地仓库:在maven的安装目录下创建repositorys文件夹,在idea的设置中找到构建工具修改路径

远程仓库:位于远程服务器上的仓库。Maven可以从远程仓库下载项目的依赖项。Maven中央仓库是一个广泛使用的远程仓库,包含了大量的开源Java库。

ps:也可以搭建隐秘的私服:maven私服搭建详细教程(看完必会)_想养一只萨摩耶~的博客-CSDN博客

镜像:解决从远程仓库获取jar包速度慢的问题

  • 镜像:mirros
  • 国内使用阿里云
  •     <mirror>
          <id>alimaven</id>
          <name>aliyun maven</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
          <mirrorOf>central</mirrorOf>
        </mirror>

4、Maven的常用命令

什么是 Maven 的生命周期?
Maven 生命周期定义了各个构建环节的执行顺序,有了这个清单,Maven 就可以自动化的执行构建命令了。

  • Clean:会将target目录删除
  • site:生成项目的站点文档
  • validate:验证工程是否正确,所有需要的资源是否可用。
  • compile:编译项目的源代码。
  • test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
  • package:把已编译的代码打包成可发布的格式,比如 jar、war 等。
  • integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
  • verify:运行所有检查,验证包是否有效且达到质量标准。
  • install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
  • deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享

详情请阅读:Maven基础(2):Maven详解_mvn 命令_CodingALife的博客-CSDN博客

5、Maven的插件

  • Maven 的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的
  • 每个插件都能实现多个功能,每个功能就是一个插件目标
  • Maven 的生命周期与插件目标相互绑定,以完成某个具体的构建任务

6、Maven的依赖声明

①依赖声明

GroupId: 依赖的组织或项目的唯一标识符。
ArtifactId: 依赖项目的唯一标识符。
Version: 依赖项目的版本号。


②依赖的范围
Maven还提供了依赖范围(Scope)的概念,用于控制依赖在项目构建过程中的使用范围。常用的依赖范围包括:

  • compile: 默认的依赖范围,依赖在编译、测试和运行时均可用。
  • test: 仅在测试阶段可用,不会包含在最终的构建产物中。
  • provided: 在编译和测试阶段可用,但在运行时由容器或其他外部配置提供。
  • runtime: 在运行时可用,不参与编译和测试。
  • system: 类似于provided范围,但需要显式指定依赖的路径。
  • import: 仅用于管理依赖的版本,不会实际引入依赖。


③传递性依赖
Maven还支持传递性依赖(Transitive Dependency)。当一个模块依赖于另一个模块时,Maven会自动解析并引入被依赖模块的依赖项。这种传递性依赖的机制简化了依赖管理过程。

例如,如果模块A依赖于模块B,而模块B又依赖于模块C,那么当我们在模块A中声明对模块B的依赖时,Maven将会自动解析并引入模块C的依赖项。

④Maven依赖冲突解决
在使用Maven进行依赖管理时,有时会出现依赖冲突的情况,即多个依赖项引入了相同的类或资源,导致编译或运行时的冲突。

  • 优先级规则:Maven将选择使用优先级更高的依赖项,可以通过在pom.xml文件中显式声明依赖项的顺序来调整优先级。
  • 排除依赖:可以通过在依赖声明中排除特定的传递性依赖项来解决冲突:

        在exclusions放入冲突的依赖

        <dependency>
               <groupId>xxx</groupId>
               <artifactId>xxx</artifactId>
                <version>x.x.x</version>
                <exclusions>xxx</exclusions>
        </dependency>​

  • 版本锁定:使用dependencyManagement指定版本

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值