1、Maven简介
什么是Maven
Maven是专门用于管理和构建Java项目的工具,它主要的功能有:
- 提供了一套标准化的项目结构
- 提供了一套依赖管理机制(不需要再去手动导入jar包)
- 提供了一套依赖标准化的构建流程(编译,测试,打包,发布.....)
Maven标准化项目结构
Maven提供了一套标准化项目结构,所有的IDE使用Maven构建的项目结构完全一样,所有IDE创建的Maven项目也可以通用
2、Maven仓库
仓库的分类
本地仓库:自己计算机上的一个目录
中央仓库:由Mavne团队维护的全球唯一的仓库
远程仓库(私服):一般由公司团队搭建的私有仓库
执行流程
当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库是否有对应的jar包
- 如果没有,则去中央仓库中下载对应的jar包到本地仓库
- 如果有,则在项目直接引用
搭建远程仓库,jar包的查找顺序为
- 本地仓库 --> 远程仓库 --> 中央仓库
3、Maven安装
Maven属于绿色软件,解压即可安装
- 关注两个文件
- bin/mvn.cmd 可执行文件
- conf/settings.xml 配置文件
- 注意不要放在中文目录下
4、Maven的配置
Maven三种配置方法
配置本地仓库:修改conf/settings.xml 中55行的 为一个指定目录
<localRepository>D:\software\mvn_resp</localRepository>
配置阿里云私服:修改conf/settings.xml 中160行 标签,为其添加如下子标签
<mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
Maven默认使用的是jdk1.5版本,在188行标签可以修改,不改也一样可以,向上兼容的
<profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile>
5、IDEA配置Maven
点击file -> Settings -> Build Execution Deployment -> Build Tools -> Maven
填入自己的Mavne地址
6、Maven坐标
什么是坐标
- Maven中的坐标是资源的唯一标识
- 使用坐标来定义项目或引入项目中需要的依赖
Maven坐标的主要组成
- groupId:定义当前Maven项目属于组织名称(通常反写域名)
- artifactId:定义当前Mavne项目名称
- version:定义当前项目版本号
7、IDEA创建Mavne模块
创建步骤
- 创建模块,选择Maven,点击Next
- 填写模块名称,坐标信息,点击finish,创建完成
- 编写HelloWorld,测试运行
创建过程
选择新建项目点击Maven
下方勾选可以修改模块名称和坐标信息
再点完成即可
8、Maven依赖管理
使用坐标导入jar包
在pom.xml中编写标签
<dependencies> </dependencies>
在标签中使用引入坐标
<dependencies> <dependency> </dependency> </dependencies>
定义坐标的grupId,artifactld,version
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency> </dependencies>
点击刷新按钮,使坐标生效
使用快捷方式引入jar包
在pom.xml中按alt+insert,选中Dependency
在弹出的面板中搜索对应坐标,然后双击选中对应坐标
点击刷新按钮,使坐标生效
在线查询jar包依赖
通过官网:https://mvnrepository.com 搜索依赖
选择对应的资源复制到pom.xml文件中即可
注意:同样的jar包,后面配的会把前面配的替代掉
9、Maven常用命令
IDEA操作Maven命令
命令 | 说明 |
---|---|
mvn clean | 删除target目录 |
mvn compile | 编译main目录 |
mvn test | 执行test目录 |
mvn package | 打包到target目录下 |
mvn install | 安装到本地仓库中 |
案例演示
mvn clean
mvn compile
编译之后又会重新生成target目录
mvn test
比较少在这边进行测试
mvn package
打包完会在target生成一个jar包
10、Maven的生命周期
Maven构建项目生命周期描述的是一次构建过程经历了多少事件
Maven对项目构建的生命周期划分为3套
- clean : 清理工作
- default:核心工作,例如:编译,测试,打包,安装等
- site:产生报告,发布站点
在构建过程中是没办法跳过的
例如:我们进行测试,是没办法跳过编译,直接进行测试的
整体生命周期
11、Maven依赖管理
通过设置坐标的依赖范围(scope)可以设置对应jar包的作用范围
不设置的时候,默认就是compile的范围,也就是所有路径都能使用
依赖范围 | 编译类路径(main) | 测试类路径(test) | 运行类路径(target) | 例子 |
---|---|---|---|---|
compile | Y | Y | Y | logback |
test | - | Y | - | Junit |
provided | Y | Y | - | servlet-api |
runtime | - | Y | Y | jdbc驱动 |
代码演示
导入druid
<!-- druid连接池依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.9</version> <scope>compile</scope> </dependency>
在什么都没有配置的情况下,main目录和test目录都是能用的
在pom.xml文件中添加作用域
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.9</version> <scope>test</scope> </dependency>
发现只有test目录能用了