Maven

概述

Maven是一款管理和构建Java项目的工具。基于POM(项目对象模型)的概念,通过一小段描述来管理项目

Maven坐标,唯一标识和定位一个项目

groupId:组织

artifactId:模块名称

version:版本

仓库:用于存储资源,管理jar包

本地仓库:自己计算机上的一个目录

中央仓库:由Maven团队维护的全球唯一的仓库

远程仓库:一般由公司团队搭建的私有仓库

使用顺序:本地仓库>远程仓库>中央仓库

依赖管理

依赖:指当前项目运行所需的jar包

配置依赖(在IDEA中)

  1. 在pom.xml中编写标签
  2. 标签中使用引入坐标
  3. 定义坐标的groupId,artifactId,version
  4. 点击刷新按钮,引入最新加入的坐标
1
2
3
4
5
6
7
8
<dependencyies>
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</dependency>
...
</dependencyies>

依赖传递

依赖具有传递性

  • 直接依赖:在当前项目中通过依赖配置建立的关系

  • 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

  • 排除依赖:主动断开依赖的资源,被排除的资源无需指定版本

    •   <exclusions>
            <exclusion>
                <groupId></groupId>
                <artifactId></artifactId>
            </exclusion>
        </exclusions>
        
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14

      ### 依赖范围

      | scope值 | 主程序 | 测试程序 | 打包(运行) | 范例 |
      | :-----------: | :----: | :------: | :----------: | :---------: |
      | compile(默认) | Y | Y | Y | log4j |
      | test | - | Y | - | junit |
      | provided | Y | Y | - | servlet-api |
      | runtime | - | Y | Y | jdbc驱动 |

      可以通过下面的xml标签来设置依赖范围

      ```xml
      <scope>...</scope>

生命周期

每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。(运行后面的阶段,前面的阶段也会运行)

生命周期阶段(常见)

常见生命周期阶段
clean 移除上一次构建生成的文件
compile 编译项目源代码
test 使用合适的单元测试框架运行测试
package 将编译后的文件打包,如:jar、war等
install 安装项目到本地仓库