Maven学习笔记

Maven是一个强大的项目管理工具,负责构建、依赖管理和项目信息管理。本文详细介绍了Maven的基础知识,包括其目录结构、常用命令、生命周期和坐标系统。进一步探讨了Maven的进阶特性,如分模块开发、依赖管理(依赖传递、可选和排除依赖)、聚合与继承的概念。此外,还讲解了属性、版本管理、多环境配置、跳过测试以及私有仓库(Nexus)的使用,帮助开发者更高效地管理项目。
摘要由CSDN通过智能技术生成

Maven基础

概念:

​ Maven是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

功能:

​ 帮助程序员构建工程,管理 jar 包,编译代码,自动运行单元测试,打包,生成报表,以及部署项目,生成Web站点

Maven仓库介绍:

  • 本地仓库:

    用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包, 优先从本地仓库查找

  • 远程仓库:

    如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。 远程仓库可以在互联网内也可以在局域网内。

  • 中央仓库:

    在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包含了世界上大部分流行的开源项目构件。但下载速度慢,不利于使用,可改为使用国内公司架设的远程仓库。

Maven目录结构:

  • src:源码
    • main:主工程目录
      • Java:主工程代码
      • resources:需要使用的配置文件
      • webapp:web项目的资源目录(jsp/html/WEB-INF),有web项目时存在
    • test:测试目录
      • Java:测试代码
      • resources:测试需要使用的配置文件
  • pom.xml:项目的核心配置文件

常用命令:

  • compile:编译,将 src/main/java 下的文件编译为 class 文件输出到 target 目录下
  • clean:清理,执行 clean会删除 target 目录及内容
  • package:打包,对于 java 工程执行package打成 jar 包,对于web工程打成war 包
  • install:安装,执行 install 将maven打成 jar 包或war 包发布到本地仓库

注意:当后面的命令执行时,前面的操作过程也都会自动执行

Maven的生命周期:

  • Clean:在进行真正的构建之前进行一些清理工作
  • 核心构建:编译,测试,打包,部署等等
  • 站点发布

Maven坐标:

概念:被Maven管理的资源的唯一标识

  • groupId:组织名称
  • artifactId:模块名称
  • version:版本号

坐标来源:互联网搜索,如Maven Repository

依赖的范围:

项目依赖某个包,需要在pom.xml中添加包的坐标,而且要指定依赖范围<scope></scope>

依赖范围 对编译有效 对测试有效 对运行时有效 示例
compile ✔️ ✔️ ✔️ spring-core
test - ✔️ - Junit
provided ✔️ ✔️ - servlet-api
runtime - ✔️ ✔️ JDBC驱动
system ✔️ ✔️ - 本地Maven仓库之外的类库

依赖范围由强到弱的顺序是:compile>provided>runtime>test

使用方式:

  • 默认引入 的 jar 包 ------- compile 【默认范围 可以不写】(编译、测试、运行都有效 )
  • servlet-api 、jsp-api ------- provided (编译、测试有效, 运行时无效防止和 tomcat 下 jar 包冲突
  • jdbc 驱动 jar 包 ---- runtime (测试、运行 有效 )
  • junit ----- test (测试有效)

Maven进阶

分模块开发与设计

意义:

使得各个模块中仅包含当前模块对应的功能与配置文件,满足不同模块之间的共享的需求。

步骤:

  1. 使用 install 指令将当前模块发布到本地仓库
  2. 需要依赖当前模块的模块通过导入当前模块的坐标进行使用

依赖管理

依赖传递

依赖具有传递性,1模块依赖2模块,而2模块又依赖了3、4、5等等模块,此时1模块均可以使用这些依赖。

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:被依赖的资源如果依赖其他资源,则当前项目间接依赖其他资源

依赖传递冲突问题:

  • 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
  • 声明优先:当资源在相同层级被依赖时,配置顺序考前的覆盖配置顺序靠后的
  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的,即后配置的优先级高

可选依赖

可选依赖是隐藏当前工程所依赖的资源,隐藏后对应的资源不具有依赖传递性,即对外隐藏当前依赖的资源-不透明。

在对应资源的坐标中添加,true代表隐藏,false代表不隐藏

<optional>true</optional>

排除依赖

排除依赖是指在当前引用的资源中将其中的某些依赖排除。在某些资源不可通过可选依赖进行隐藏时,可使用排除依赖,即主动断开依赖的资源,被排除的资源无需指定版本-不需要。

在要排除的依赖坐标中添加

<exclusions>
    <exclusion>
        <groupId></groupId>
        <artifactId></artifactId>
    </exclusion>
</exclusions>

聚合

  • 聚合:将多个模块组织成一个整体,同时对整个项目进行构建的过程称为聚合
  • 聚合工程:通常是一个不具有业务功能的空工程(有且仅有一个pom文件)
  • 作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建
    • 当工程中的某个模块更新时,必须保障工程中与已更新模块关联的模块同步更新,使用聚合工程可以解决批量模块同步构建的问题

步骤:

  1. 创建聚合工程

  2. 指定聚合工程的打包方式

    <packaging>pom</packaging>
    
  3. 设置所管理的模块名称

    <modules>
        <!--配置各个模块的路径即可 如 ../maven-xxx -->
        <module></module>
    </modules>
    

继承</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值