Maven

一. 理论

1. 概念作用

Maven是项目构建工具,通过Maven创建Java项目,Maven构建的Java项目的目录结构为:
在这里插入图片描述

2. 依赖管理

Java项目一般会依赖多个Jar包,Maven可以管理Jar包,通过gav定位jar包,默认先从本地仓库找,如果没找到再去远程仓库找(仓库通过settings.xml配置)

3. 间接依赖与排除方法

Maven默认会将引入Jar包所依赖的Jar包一并引入,可以通过以下方式排除掉间接引入的jar包

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

4. 解决依赖冲突策略

若项目中多个Jar同时引用了相同的Jar时,会产生依赖冲突,Maven采用两种避免冲突的策略,因此在Maven中是不存在依赖冲突的。
方式一:短路优先
本项目——>A.jar——>B.jar——>X.jar
本项目——>C.jar——>X.jar
若本项目引用了A.jar,A.jar又引用了B.jar,B.jar又引用了X.jar,并且C.jar也引用了X.jar,在此时,Maven只会引用引用路径最短的Jar。
方式二:声明优先
若引用路径长度相同时,在pom.xml中谁先被声明,就使用谁。

5. 聚合

父工程通过聚合,可以对其子工程统一打包部署,并通过控制构建顺序,避免出现以来混乱导致的构建失败

<modules>
    <module>web-connection-pool</module>
    <module>web-java-crawler</module>
</modules>

6. 继承

父工程定义依赖版本以及通用依赖,子工程继承父工程后,默认依赖了父工程中的依赖。
父工程pom.xml

<groupId>com.micozone</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>
<!--
Maven 项目的打包方式:
1、jar:通过 maven package 命令将项目打成 jar 包
2、war:通过 maven package 命令将项目打成 war 包
3、pom:父工程中使用,既不打成 jar 包,也不打成 war 包
-->
<packaging>pom</packaging>

<!--
依赖管理器:
依赖管理器中的依赖,子工程使用依赖时可以不指定版本号,版本号通过依赖管理器管理
-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.7.7</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
</dependencyManagement>

<!--父工程中的依赖,子工程会继承-->
<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
</dependencies>

子工程pom.xml

<!--指定父工程-->
<parent>
    <groupId>com.micozone</groupId>
    <artifactId>parent</artifactId>
    <version>1.0</version>
</parent>
<artifactId>xxx</artifactId>

二、原理

1.pom.xml


三、实践

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MicoZone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值