Maven笔记

本文详细介绍了Maven的各个方面,包括坐标的构成、仓库的配置(本地、中央、远程和私服)、生命周期与插件的工作原理、聚合与继承的概念,以及如何指定打包后jar的名字。Maven的特性如约定优于配置和插件机制使得项目管理更加便捷。此外,还讲解了Maven环境配置,如修改本地仓库位置和设置中央仓库镜像。
摘要由CSDN通过智能技术生成


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

  • pom:项目对象模型 (Project Object Model),项目的属性、依赖、构建、配置信息等都被抽象到项目对象模型里,定义了项目的基本信息;

 Maven的特点:

  • 微内核:大部分功能通过插件实现,主要用于XML文件的解析、管理生命周期;
  • 约定优于配置。

Maven构建的步骤:

  1. 清理:清理以前旧的class文件
  2. 编译
  3. 测试
  4. 报告
  5. 打包
  6. 安装
  7. 部署

IDEA导入Maven项目,直接File–>open…–>选择pom.xml文件即可导入Maven工程,具体的依赖可以通过IDEA边界菜单栏Maven Project中的Dependencies。

1.1 坐标和依赖

 maven中任何一个依赖、插件、项目的输出都可以叫做构件,任何一个构件都可以用一个规则来唯一标记,这个规则就是坐标,主要由以下元素构成(前三者通常是一个依赖的必要元素):

  • groupId:必要属性,如果插件是maven官方提供了,那么此时可以省,定义当前Maven项目隶属的实际项目,通常取用反向域名;
  • artifactId:必要属性,定义实际项目中中具体模板,通常就取实际的模块名字;
  • version:必要属性,定义Maven项目当前所处的版本,如果继承自父类,那么这个属性可省自动使用父类版本;
  • packaging:非必要,Maven的打包方式默认是jar,可以自己手动改;
  • classifier:非必要,定义构件输出的一些附属构件,不常用,不能直接定义,由插件帮助生成;
  • type:依赖的类型
  • scope:依赖的范围
  • optional:标识依赖是否可选
  • exclusions:用来排除传递性依赖

<scope>:依赖范围,maven的classpath总共有3套,编译一套、编译和执行测试一套、实际运行一套,默认参数是compile,三套classpath都有效;test,测试范围;provided:编译和测试有效;runtime:测试和运行范围;system:系统范围,慎用;他们三个作用的范围如下表所示:

scope 编译 测试 运行 例子
compile Y Y Y Spring-core
test - Y - Junit
provided Y Y - Servlet-Api
runtime - Y Y JDBC驱动
system Y Y - 本地的,Maven仓库之外的类库文件

 maven具备传递性依赖机制,maven会解析各个直接依赖的POM。下面是一个例子,最左边的一列表示A对B的依赖范围,最上面是B对C的依赖范围,那么A对C的依赖范围:

- compile test provided runtime
compile compile - - runtime
test test - - test
provided provided - provided provided
runtime runtime - - runtime

 依赖调节:A和B依赖同一构件的不同版本,而C依赖同时依赖A和B,那么C对于同一构件的不同版本将出现冲突,两种解决方式:

  • 短路优先:如果A–>B–>C–>X.jar,然后A–>D–>X.jar,那么后者优先解析;
  • 声明优先:如果路径的长度相同,那么谁先声明就先解析。

 归类依赖:最常见的就是版本号<version>配置。

1.2 仓库

仓库:远程仓库可以在代码中进行手动配置,并且可以配置多个,比如:

<!-- 配置spring 仓库 ,用于下载中央仓库、私服 全部都找不到某个jar -->
<repositories>
    <repository>
        <id>spring-snapshots</id>
        <name
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值