Maven
Maven学习目录
1、Maven技能树
2、了解项目管理工具
2.1 项目管理工具诞生的原因
- jar包难以寻找
- jar包依赖的问题
- jar包版本冲突问题
- jar不方便管理
- 项目结构五花八门
- 项目的生命周期控制方式五花八门
2.2 有哪些项目管理工具
- Ant
- Maven
- Gradle
3、什么是Maven
3.1 Maven的形成
- Maven最初是为了简化 一个用
Jakarta Turbine
框架开发的Web项目中的构建过程
的一个工具。 - 提到项目构建,在以前比较火热的是
Apache Ant
这个构建脚本工具;Ant火热代表了当时它很好用,但有两个致命缺点:- 有几个项目,每个项目都有自己的 Ant 构建文件,都略有不同
- 无法管理依赖
- 为了解决上述需求,Maven就这样诞生了:
- 在具备Ant功能的基础上,打造一种可以用于构建和管理任何基于 Java 的项目的工具,提供:
- 标准方法(对象模型POM)
- 对项目组成的清晰定义(结构)
- 一种发布项目信息(部署)的简单方法
- 一种在多个项目之间共享 JAR (中央仓库)的方法
- 在具备Ant功能的基础上,打造一种可以用于构建和管理任何基于 Java 的项目的工具,提供:
3.2 Apache Ant
对比Apache Maven Project
Apache Ant: 软件构建工具
Apache Maven Project: 软件项目管理和理解工具
- 使用Project Object Model来对软件项目管理
- 内置了更多的隐式规则,使得构建文件更加简单
- 内置依赖管理和Repository来实现依赖的管理和统一存储
- 内置了软件构建的生命周期
3.3 Maven的目标
Maven 的主要目标是让开发人员在最短的时间内了解任何基于 Java 的项目。为了实现这个目标,Maven 处理了几个关注的领域:
- 简化构建过程
- 提供统一的构建系统
- 提供优质项目信息
- 鼓励更好的开发实践
3.4 总结
- Maven是一个管Java项目的管理工具,主要管构建、打包、部署(全生命周期的管理)
- Maven通过对象模型-Project Object Model(pom)来对软件项目管理
- Maven的项目结构有一些显示和隐式规则
4 Maven的下载、安装以及配置
4.1 下载
4.2 安装
1、直接将tar.gz的文件夹解压到你指定的目录(想放哪放哪,别用中文命名)
2、配置环境变量:MAVEN_HOME
、PATH
MAVEN_HOME:maven存放路径
PATH:%MAVEN_HOME%/bin
3、打开命令窗口测试是否配置成功:mvn -v
Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
Maven home: /Users/nan/DevelopmentEnvironment/apache-maven-3.8.3
Java version: 1.8.0_191, vendor: Oracle Corporation,
runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
4、在maven
安装路径下新建文件夹repository
并修改./apache-maven-3.8.3/conf/setting.xml
默认的仓库位置
用于替换默认的
.m2
文件夹,避免占用系统盘资源
<localRepository>repository的路径</localRepository>
5、配置setting.xml
,将外网的maven官方镜像换成国内的阿里云镜像
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
6、配置全局&自定义IDEA开发工具
打开IDEA后不要进入项目,然后打开preferences->Build->Build Tools->Maven
5 建一个maven项目
6 Maven四大特性
6.1 依赖管理系统
依赖: 你的项目引入了那些jar包,无论是开源的还是不开源的,这些jar就是你项目的依赖,你的项目依赖于他们才能用,比如jdbc、fastjson、jetty、slf4j等
原来依赖咋引入: 最初这些东西需要我们自己去网上找,然后下载下来、复制到项目中然后构建到项目当中去
现在Maven咋引入依赖: Maven的依赖管理相当于它做了一个公共平台,jar包提供商将下载地址托管到这个平台,使用者直接在一个统一的地方去下载各式各样的依赖,找依赖、管依赖等繁琐步骤maven给你干了,你只管确定自己要用谁家的哪个东西、哪个版本,直接通过maven提供的坐标地址下揍中咧,坐标格式如下:
<!-- <dependencies>声明:是叫引入的依赖的,都得搁这个标签里面 -->
<dependencies>
<!-- <dependency>声明引入A依赖 -->
<dependency>
<!-- <groupId>
官方解释:公司或者组织的唯一标志
人话:就是咱们建项目时的包名,人家叫com.talent.core你叫com.balala.666;com.balala.666其实也是你存储的文件夹的层 级,这个要是写的不对直接就找不着这个依赖了
-->
<groupId>com.talent.core</groupId>
<!-- <artifactId>
官方解释:项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的
人话:你就理解成你上人家那个包路径下下载jar包去,但人家的项目是个多模块的,你得确定子项目名,进去之后才能看见你要的jar
-->
<artifactId>Anyonelse-core</artifactId>
<!-- <version>
见名知意,这个就是你要下这个jar的那个版本的,有时候新的版本可能去掉了一些原有的功能,你上来就找18的小姑娘有可能受不了
-->
<version>${anyonelse_version}</version>
<!-- <dependency>声明引入B依赖 -->