Maven小试牛刀

一、Maven 有三个生命周期

分别为默认生命周期、清理生命周期和站点生命周期。

1.1 默认生命周期

用来定义项目构建的过程
包含以下几个过程:

  1. Validate - 校验一个项目是一个正确的Maven项目
  2. Compile - 编译代码
  3. Test - 测试src/test/java中的方法,该内容只用于测试,不会进行打包部署
  4. Package - 将项目打包为可执行的jar、war等二进制软件包
  5. Install - 将软件包安装到本地仓库
  6. Deploy - 将软件包部署到远程仓库

1.2 清理生命周期

用来定义项目清理的过程
包含以下三个过程:

  1. Pre-clean - 在清理项目前执行一些东西
  2. Clean - 清理项目,例如删除target包
  3. Post-clean - 在清理项目后执行一些东西

1.3站点生命周期

用来定义站点发布的过程
包含以下几个过程:

  1. Pre-site - 在生成站点文档前执行一些东西
  2. Site - 生成站点文档
  3. Post-site - 在生成站点文档后、部署站点文档前执行一些东西
  4. Site-deploy - 部署站点文档

参考图为IDEA IntelliJ中Maven的默认生命周期
在这里插入图片描述

二、 Maven依赖的三大原则

规则:

  1. 依赖要设置对应的版本号,子pom内声明的依赖优先于父pom中的依赖
  2. 当依赖包找不到时,应分析具体是那个包,在哪个仓库中找不到,到远程仓库中确认是否存在。或者确认settings.xml中的用户密码是否有权限。

2.1 第一声明原则

在pom.xml配置文件中,如果有两个名称相同,版本的不同依赖声明,先写的会生效,所以先声明自己要用的版本。这里的名称相同,版本不同的依赖声明,既可以是直接依赖,也可以是传递依赖。

例如,b引用了a的0.0.1版本,c引用了b的0.0.2版本,如果我们想用的版本是0.0.1版本,那么可以将b的版本依赖放在c的前面。

2.2 路径优先原则

直接依赖优于传递依赖。如果传递依赖的Jar包版本冲突了,那么可以单独声明一个指定版本的依赖Jar包,即可解决冲突。例如,b引用了a的0.0.1版本,c引用了b的0.0.2版本,如果我们想用的版本是0.0.3版本,可以直接单独声明一个a的0.0.3版本。

2.3 排除原则

在发生传递依赖冲突时,如果依赖不是项目需要的,可以在对应的传递依赖声明中进行排除。例如,b引用了a的0.0.1版本,c引用了b的0.0.2版本,如果我们想用的版本是0.0.2版本,那么可以将b的版本依赖中排除a。

<dependency>
  <groupId>com.test</groupId>
  <artifactId>b</artifactId>
  <version>b的版本号</version>
    <exclusions>
      <exclusion>
        <artifactId>com.test</artifactId>
        <groupId>a</groupId>
      </exclusion>
    </exclusions>
</dependency>

当遇到依赖冲突时,可以采取上述原则来规避冲突。当然,还可以用dependencyManagement在父工程中定义版本,以springboot工程的依赖为例

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.2.3.RELEASE</version>
        </dependency>
    </dependencies>
</dependencyManagement>

子工程中无需定义版本号

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值