【Maven】《十分钟搞清Maevn项目》
一、Maven
(1)介绍:
Maven是apache旗下的一个开源项目,它基于项目对象模型POM (Project Object Model) 的概念,通过一小段描述信息来管理项目的构建。
(Apache软件基金会,成立于1999年,是目前世界上最大的开源软件基金会)
仓库:用来存储资源,管理各种jar包。
- 本地仓库:自己计算机上的一个目录
- 中央仓库:由Maven团队维护的全球唯一的。仓库地址:https://repo1.maven.org/maven2/
- 远程仓库(私服)
各个插件就是清理,编译,测试,打包等
(2)作用:
一共三个作用:依赖管理、统一项目结构,项目构建
1.依赖管理
方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题。
2.统一项目结构
提供标准、统一的项目结构
3.项目构建
标准跨平台(Linux、Windows、MacOs)的自动化项目构建方式
清理->编译->测试->打包->发布
(3)maven坐标
1.maven坐标概念
①Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置
②使用坐标来定义项目或引入项目中需要的依赖
2.mave坐标主要组成
①groupid:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.baidu)
②artifactid:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
③version:定义当前项目版本号
<dependency><groupid>ch.qos.logback</groupid><artifactid>logback-classic</artifactid><version>1.2.3</version>
</dependency>
maven坐标通常在创建maven项目的时候输入,然后会在pom文件中显示出来;
(4)idea中设置:
(关闭项目之后,在Idea的主界面设置即可保持全局设置)
选择Maven的路径,并在runner(运行程序)中选择JRE
设置Java编译器,字节码版本选择对应的即可
idea导入maven工程:
先将maven工程文件复制到项目文件夹中,然后可以在右侧的maven的加号中添加导入工程的pom.xml文件,或点击file->Project Structure点击加号导入pom文件,这样这个工程文件就会在项目中显示出来。
二、依赖管理
(1)依赖配置:
依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖
配置:
- 在pom.xml中编写标签
- 在标签中 使用引入坐标
- 定义坐标的 groupid,artifactid,version
- 点击刷新按钮,引入最新加入的坐标
<dependencies><dependency><groupid>ch.qos.logback</groupid><artifactid>logback-classic</artifactid><version>1.2.3</version></dependency>
</dependencies>
注意事项:
- 如果引入的依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖。(这个过程会比较耗时,耐心等待)
- 如果不知道依赖的坐标信息,可以到https://mvnrepository.com/中搜索
(2)依赖传递
1.依赖具有传递性
- 直接依赖:在当前项目中通过配置依赖建立的依赖关系
- 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
2.排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。
<dependency><groupid>ch.qos.logback</groupid><artifactid>logback-classic</artifactid><version>1.2.3</version><!-- 排除依赖: --><exclusions><exclusion><groupid>junit</groupid><artifactid>junit</artifactid></exclusion></exclusions>
</dependency>
(3)依赖范围
依赖的jar包,默认情况下,可以在任何地方使用。可以通过<scope>...</scope>
设置其作用范围。
<dependency><groupid>ch.qos.logback</groupid><artifactid>logback-classic</artifactid><version>1.2.3</version><!-- 依赖范围 --><scope>test</scope></dependency>
scope值 | 主程序 | 测试程序 | 打包(运行) | 范例 |
---|---|---|---|---|
complie(默认) | Y | Y | Y | log4j |
test | Y | junit | ||
provided | Y | Y | servlet-api | |
runtime | Y | Y | jdbc驱动 |
作用范围说明:
- 主程序范围有效。(main文件夹范围内)
- 测试程序范围有效。(test文件夹范围内)
- 是否参与打包运行。(package指令范围内)
main中是主程序,test是测试程序,打包后的jar包可在target文件夹中找到
(4)生命周期
Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一。
maven中有3套互相独立的生命周期:
- clean:清理工作
- default:核心工作,如:编译、测试、打包、安装、部署等
- site:生成报告、发布站点等
执行生命周期在idea右侧maven面板中选择对应生命周期即可。
生命周期本质上是maven各个插件的执行。
在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行;
不一套的话,互不影响;
比如运行text不会执行clean但是会执行compile
生命周期阶段:
- clean:移除上一次构建生成的文件
- compile:编译项目源代码
- test:使用合适的单元测试框架进行测试(junit)
- package:将编译后的文件打包,如:jar、war等
- install:安装项目到本地仓库