文章目录
- Maven基本介绍
- 一、概述
- 1、简介
- 2、官网和仓库地址
- 3、仓库分类
- 5、坐标
- 6、依赖
- 7、目录分类
- 8、jar包和本地仓库对应关系
- 二、pom.xml文件解读
- 三、Maven命令(生命周期)
- 四、依赖
- 1、添加jar包依赖
- 2、依赖的范围配置 scope 标签
- 3、依赖的传递
- 4、依赖的排除
- 5、依赖的继承
- 6、聚合
- 五、创建Maven项目
- 1、父工程
- 2、子工程
- 六、工程导入
Maven基本介绍
一、概述
1、简介
- Maven是用来自动下载jar包的工具
- Maven是用来管理jar包的工具
- Maven是用来构建项目的工具
2、官网和仓库地址
- Maven官网:https://maven.apache.org/
- Maven仓库配置文件:https://mvnrepository.com/
3、仓库分类
- 中央仓库 / 远程仓库:本质上就是一个国外的网站
- 镜像仓库:其实就是一个国内的网站,人家从中央仓库下载好了jar包,你可以直接用
- 本地仓库:其实就是你自己定的一个文件夹的位置,用来存jar包的位置
5、坐标
通过Maven下载很多的jar包,唯一的定位到 jar 包的方式就是使用坐标
GroupId:公司或组织域名
ArtifactId:项目名称或项目中的一个模块
Version:版本号
6、依赖
Maven会自动下载并管理相关的jar
7、目录分类
- 核心配置文件:setting.xml,D:\Path\apache-maven\apache-maven-3.6.3\conf\settings.xml
- 本地仓库:自己定义的本地仓库路径,D:\Java\Maven\repository
- 本地工作空间:自己创建的目录空间(很少使用),D:\Java\Maven\maven_workspace
8、jar包和本地仓库对应关系
pom.xml的jar包
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
本地仓库
Maven本地仓库根目录\org\mybatis\spring\boot\mybatis-spring-boot-starter\2.2.2
注意:坐标也是这样对应的
二、pom.xml文件解读
<?xml version="1.0" encoding="UTF-8"?>
<!--project 标签:根标签,表示对当前工程进行配置和关联-->
<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">
<!--modelVersion 标签:从 Maven2 开始固定是 4.0.0,代表当前 pom.xml 所采用的标签结构-->
<modelVersion>4.0.0</modelVersion>
<!--
坐标信息
groupId 标签:代表公司或组织
artifactId 标签:代表项目或项目下的某一个模块
version 标签:代表当前模块版本
packaging 标签:代表当前工程打包方式;
取值 jar:生产 jar 包,Java 工程;
取值 war:生成 war 包,Web工程;
取值 pom:这个工程是用来管理其它工程的工程
-->
<groupId>org.example</groupId>
<artifactId>daily_demo02</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<!--properties 标签:Maven 中定义的属性值-->
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<!--dependencies 标签:配置依赖信息,可以包含多个 dependency 子标签-->
<!--dependency 标签:配置一个具体的依赖信息-->
<!--坐标信息:导入哪个 jar 包,就配置它的坐标信息即可-->
<dependencies>
<dependency>
<!--坐标信息:导入哪个 jar 包,就配置它的坐标信息即可-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
</dependencies>
</project>
三、Maven命令(生命周期)
- clean:清理,删除target目录
- compile:编译,主程序编译main
- test:测试,运行测试程序,测试报告在 target/surefire-reports
- package:打包,打包的结果 jar 包,存放到 target 目录
- install:安装jar包到本地仓库、生成pom文件、打包jar包,pom.xml和XXX.pom(名字改变,本质上是同一个文件)
- site:生成站点
- deploy:将最终的包复制到远程的仓库,让其它开发人员与项目共享或部署到服务器上运行(需要借助插件 cargo)
四、依赖
1、添加jar包依赖
- 修改pom.xml文件,使用dependencies标签,引入各种jar包
- 指定jar包的坐标,刷新,Maven会自动下载
- 检查本地仓库
2、依赖的范围配置 scope 标签
<!--配置 jar包 依赖的时候需要,有些可以不配置-->
<scope>compile</scope>
<scope>test</scope>
<scope>provided</scope>
3、依赖的传递
- compile:B依赖C可以在传递
- test 或 provided:B依赖C不可以传递,明确配置才可以传递
4、依赖的排除
jar 包的冲突,配置pom.xml文件,dependencies 标签中
<dependency>
<!--jar包-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>compile</scope>
<!--使用excludes标签配置依赖的排除-->
<exclusions>
<!--在exclude标签中配置一个具体的排除-->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
5、依赖的继承
- 父工程的依赖,子工程都可以使用
- 打包方式是pom的是父工程(pom.xml配置文件中 packaging 标签)
- 父工程管理其它子工程
- 指定父工程 parent 标签
- 指定子工程 module 标签
- 当子工程的 groupId 标签 和 version 标签 跟父亲一样,可以省略
- artifactId 标签 子工程保留不能省略
- 子工程的依赖版本和父工程的不同,子工程的依赖会覆盖父工程的依赖,正常情况版本是一样的
6、聚合
- 部分(模块)组成整体(项目)
- 依赖安装时只需一键安装 install ,项目的依赖安装后,模块的依赖也会安装(倒过来安装)
- 以下配置会自动生成,特殊情况下需要自己配置
<!--
聚合的配置父工程pom.xml
modules 标签:被管理的工程,可以包含多个 module 子标签
module 标签:具体被管理的每个工程
-->
<modules>
<module>day49</module>
<module>day49_2</module>
</modules>
<!--
子工程配置pom.xml,指明父工程
-->
<parent>
<artifactId>daily_demo02</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
五、创建Maven项目
1、父工程
2、子工程
创建Moule即可
直接创建一个普通Maven即可,Java项目
六、工程导入
修改maven配置即可
测试项目是否能正常运行