maven作用:

依赖管理

方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题,通过在maven项目的pom.xml文件中添加依赖使maven自动下载相应的jar包

pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!-- POM模型版本 -->
    <modelVersion>4.0.0</modelVersion>

    <!-- 当前项目坐标 -->
    <groupId>com.itheima</groupId>
    <artifactId>maven_project1</artifactId>
    <version>1.0-SNAPSHOT</version>
    
    <!-- 打包方式 -->
    <packaging>jar</packaging>
 
</project>

统一项目结构

项目构建

maven提供了标准的、跨平台(Linux、Windows、MacOS) 的自动化项目构建方式

maven模型

  • 项目对象模型:将自己的项目抽象成一个对象模型,有自己专属的坐标,可以被别的项目当成依赖在pom.xml中引入

  • 仓库顺序:本地->远程->中央

maven依赖

依赖具有传递性(只用导入直接依赖)

projectA依赖了projectB。对于projectA 来说,projectB 就是直接依赖。而projectB依赖了projectC及其他jar包。 在projectA中也会将projectC的依赖传递下来。对于projectA 来说,projectC就是间接依赖。

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

<dependency>
    <groupId>com.itheima</groupId>
    <artifactId>maven-projectB</artifactId>
    <version>1.0-SNAPSHOT</version>
   
    <!--排除依赖, 主动断开依赖的资源-->
    <exclusions>
    	<exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </exclusion>
    </exclusions>
</dependency>

依赖范围:在项目中导入依赖的jar包后,默认情况下,可以在任何地方使用,如果希望限制依赖的使用范围,可以通过<scope>标签设置其作用范围。

scope

主程序main

测试程序test

打包(运行)

compile(默认)

Y

Y

Y

test

-

Y

-

provided

Y

Y

-

runtime

-

Y

Y

maven生命周期

Maven对项目构建的生命周期划分为3套(相互独立):

  • clean:清理工作(删除当前项目target文件夹)。

  • default:核心工作。如:编译、测试、打包、安装、部署等。

  • site:生成报告、发布站点等(几乎用不到)。

注:

  • 同一套生命周期中,我们在执行后面的生命周期时,前面的生命周期都会执行