1.Maven简介
传统项目状态管理分析:
- jar包不统一,jar包不兼容
- 工程升级维护过程繁琐
- ......
1.1 什么是Maven
本质是一个项目管理工具,将项目开发和管理工程抽象成一个项目对象模型(POM)
POM:项目对象模型
1.2 Maven的作用
项目管理:提供标准的、跨平台的自动化项目构建方式
依赖管理:方便快捷的管理项目依赖的资源包(jar包),避免资源间的版本冲突问题
统一开发结构:提供统一的、标准的结构
2.Maven的基本概念
2.1 仓库
仓库:用来存储资源,包含各种jar包
分类:
本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源
远程仓库:非本机电脑上的仓库,为本地仓库提供资源
中央仓库:Maven团队维护,存储所有资源的仓库
私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源
私服的作用:
保存有版权的资源,一定范围内共享资源
2.2 坐标
Maven中的坐标用于描述仓库中资源的位置
坐标主要组成:
groupId:定义当前Maven项目隶属的组织名称
artifactId:定义当前Maven项目名称
version:定义当前项目版本号
packaging:定义该项目的打包方式
中央仓库mvnrepository.com
//Junit坐标样例
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
3.仓库配置
3.1 本地仓库配置
在Maven的conf目录下的Settings.xml文件中:
默认本地仓库位置:
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
修改位置:
<localRepository>/path/to/local/repo</localRepository>
3.2 远程仓库配置
在Setting文件中配置阿里云镜像仓库:
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>http://maven.aliyun.com/repository/public</url>
</mirror>
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
//关键
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
4. 第一个Maven项目(手工制作)
4.1 Maven工程目录结构
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId> //包名
<artifactId>EL01</artifactId> //工程名
<version>1.0-SNAPSHOT</version> //版本号
<packaging>war</packaging>
<dependencies> //依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
4.2 Maven项目构建命令
在pom.xml文件所在层级下进入命令行
mvn compole //编译 : 下载插件,出现target目录
mvn clean //清理:清理target目录
mvn test //测试
mvn package //打包
mvn install //安装
4.3 插件创建工程
5. 第一个Maven项目(IDEA制作)
6 分模块开发
6.1 分模块开发的意义
将原始模块按功能拆分成若干个子模块,方便模块间的相互调用,接口共享。
6.2 分模块开发流程
7 依赖管理
7.1 依赖传递
依赖具有传递性:
7.2 依赖冲突
7.3 可选依赖和排除依赖
8 继承和聚合
8.1 聚合
8.2 继承
8.3 继承与聚合的区别
9 属性
9.1 Maven依赖加载属性
9.2 资源文件加载属性
9.3 其他属性
10 版本管理
11 多环境配置与应用
12 跳过测试
13 私服
13.1 Nexus的安装与启动
13.2 私发仓库的分类
13.3 本地仓库访问私服配置
Maven配置:
- 配置访问私服的权限
- 私服的访问路径
<server>
<id>itheima-release</id>
<username>admin</username>
<password>admin</password>
</server>
<server>
<id>itheima-snopshot</id>
<username>admin</username>
<password>admin</password>
</server>
<mirror>
<!-- 仓库组id -->
<id>maven-public</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>