一,Maven的概述
一,传统的项目管理
一,传统开发的阶段
一个项目需要经过的流程:
- 需求分析:分析项目具体完成的功能,有声明要求,具体怎么实现
- 设计阶段(架构阶段):根据需要的结果,设计项目使用什么技术,需要解决什么难点
- 项目构建阶段:对项目的综合环境进行搭建,解决依赖问题
- 开发阶段:编码实现功能,编译代码,本地测试
- 测试阶段:专门的测试人员,测试整个项目的功能是否十分符合设计的要求,并出一个测试报告
- 项目打包发布阶段:将项目运行到生产环境中
- 后期运维
Maven可以简化从项目构建到项目打包发布中的操作
Mavem在整个过程中的作用:
- 项目自动化构建,帮助开发人员做项目代码的编译,测试,打包,安装,部署等工作
- 管理依赖,管理项目中的各种依赖jar包
注:依赖就是项目中需要使用的其他资源,常见的是jar,比如项目中使用mysql驱动,我们就说项目依赖mysql驱动
二,传统项目构建方式
传统项目构建项目的步骤:
- 从网络上下载相应的依赖jar包
- 把jar包导入到项目中
- 手动解决jar依赖问题,如:版本不兼容,版本过低……
注:依赖问题有很多,比如a.jar依赖b.jar,b.jar依赖c.jar,那么安装a时需要先安装b,安装b时需要安装c,类似与Linux的RPM包管理一样,但除了这些还有版本不兼容,版本过低,版本过高等问题
传统方式项目构建的弊端:
- Jar需要手动下载,没有同一的下载工具,在网上找jar包就要找半天
- Jar包不统一,兼容问题,手动解决很麻烦
- 后期项目升级维护还要重写更新jar,这个过程很繁琐
- 项目越大,传统方式构建花费时间成本越高
二,Maven的介绍
- Maven是Apache的开源项目,使用java语言编写,所以在安装Maven时需要先安装java环境
- Maven是目前最流行的自动化项目构建工具,对于生产环境下多框架,多模块的整合开发有着重要作用,是一款在大型项目开发过程中不可或缺的重要工具
- Maven开源处理整合多个项目之间的引用依赖关系,可以根据业务和分层的需要任意拆分项目,也可以把jar依赖的其他jar包进行自动下载并引入项目
- Maven本质上是一个项目管理工具,它将项目开发和管理的过程抽象成一个项目对象模型(POM)
POM(Project Object Modle):项目对象模型
Maven的作用:
- 依赖下载:Maven有一个统一的中央仓库,基本上项目开发中的各种依赖包都有
- 项目构建:它提供了标准的,跨平台的自动化项目构建方式
- 依赖管理:发布快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题
- 统一开发结构:提供标准的,统一的项目结构
Maven构建的各个环节:
- 清理(clean):删除项目以前的编译结果,为重新编译做准备
- 编译(compile):将java源程序编译成字节码
- 测试(test):针对项目中的关键点进行测试,确保项目在迭代开发过程中的正确性
- 报告(verify):在每一次测试后以标准的格式记录和展示测试结果
- 打包(backage): 将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署,java文件用于jar包,动态web工程打war包
- 安装(install): Maven特定的概念—将打包得到的文件复制到”仓库中’的指定位置
- 部署(deploy): 将动态web工程生成的war包复制到servlet容器的指定目录下,使其可以运行
三,Maven的基础概念
一,Maven仓库的概念和配置
Maven仓库:用于存储资源,包含各种jar包
Maven仓库的分类:
1,本地仓库:本地存储资源的仓库,提供连接远程仓库获取资源
2,远程仓库:远程存储资源的仓库,它分为两类
- 中央仓库:这个仓库是官方提供并维护,存储所有资源的仓库
- 私服仓库:部门/公司范围内存储资源的仓库,从中央仓库获取资源
私服仓库的作用:
- 保存具有版权的资源,包含购买或自主研发的jar(中央仓库中存储的jar资源都是开源的,不能存储具有版权的资源)
- 一定范围内共享资源,仅对内部开放,不对外共享
Maven中央仓库的web域名:https://mvnrepository.com/
二,Maven坐标
坐标:用于描述仓库中资源的位置
maven坐标的主要组成:
- groupId:定义当前Maven项目隶属组织名称(通常是域名的反写,例如:org.spring)
- artifactId:定义当前Maven项目的名称(通常是模块名称,例如:CRM,SMS)
- version:定义当前的版本号
- packaging:定义该项目的打包方式
maven的作用:使用唯一标识,唯一性定位资源位置
例如:spriing-context的坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.11</version>
</dependency>
二,Maven的下载安装配置
一,Maven的下载安装
下载地址:https://maven.apache.org/download.cgi
前置条件:在Maven前需要先安装JDK环境,不然Maven使用会报错
二,Windowns安装Maven
① 下载Maven安装包
② 解压
1,添加一个MAVEN_HOME变量,值为maven的路径
MAVEN_HOME=D:\Maven\apache-maven-3.8.1
%MAVEN_HOME%\bin
④ 测试是否安装成功
命令:mvn -version
三,linux安装Maven
和windowns的安装步骤是一样的
① 下载Maven安装包
② 解压
命令:tar -zxvf apache-maven-3.8.3-bin.tar.gz
③ 配置环境变量
#添加以下配置 export MAVEN_HOME=/home/apache-maven-3.8.3-bin.tar.gz export PATH=$PATH:$MAVEN_HOME/bin
④ 测试是否安装成功
命令:mvn -version
四,Maven仓库的配置
一,Maven的安装目录结构
- bin:启动文件目录
- conf:配置文件目录
- lib:存放maven运行需要的包
- ……
Maven的核心配置文件是conf目录中的settings.xml文件
二,Maven仓库的配置
一,本地仓库的配置
本地仓库的配置主要配置本地仓库的保存路径
默认仓库的配置位置:
<localRepository>${user.home}/.m2/repository</localRepository>
自定义位置:
<localRepository>D:\maven\maven-repository</localRepository>
二,配置镜像仓库
maven中央仓库在国外,如果大规模访问会很卡,这时可以配置镜像仓库
maven默认路径的仓库:
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>http://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
配置阿里云镜像仓库:
<mirrors>
<mirror>
<!--此镜像的唯一标识,主要用来区别不同的mirror元素-->
<id>nexus-aliyun</id>
<!--对那种仓库进行镜像,简单的来说就是替代那个仓库(这里替代中央仓库)-->
<mirrorOf>central</mirrorOf>
<!--镜像的名称-->
<name>Nexus aliyun</name>
<!--镜像的url位置-->
<url>http://maven.aliyun.com/nexus/cotent/groups/public</url>
<blocked>true</blocked>
</mirror>
</mirrors>
三,Maven构建项目的简单描述
一,Maven的项目结构
一,创建普通java项目的目录结构
-java:项目根路径 -src:项目文件目录 -lib:项目依赖jar包目录
二,创建Maven项目的目录结构
-maven:maven项目根路径
-src:maven项目文件目录
-main:java主目录
-java:java文件目录
-resource:静态资源目录,如:xml,properties,html,css,js,png等资源目录
-test:测试目录
-java:测试java文件目录
-target:编译后的文件保存目录(这个文件目录只有在第一次编译后才会产生)
-lib:项目依赖
-pom.xml:maven核心配置文件,通过这个文件进行项目依赖导入,插件控制等
二,Pom文件的结构
pom.xml文件是Maven的核心,通过pom文件构建项目模型进行系统管理
pom文件的几大组成部分:
- 头文件和根标签
- 当前项目声明
- 依赖管理
- 插件管理
1,头文件和根标签(固定写法)
<!--头文件-->
<?xml version="1.0" encoding="UTF-8"?>
<!--project根标签,xmlns是名称空间,也是固定的-->
<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">
</project>
2,当前项目声明(主要用来描述当前项目)
<!--当前model的版本,这个一般不用管-->
<modelVersion>4.0.0</modelVersion>
<!--当前项目隶属组织名称-->
<groupId>org.example</groupId>
<!--当前项目的名称-->
<artifactId>SpringBoot-dome</artifactId>
<!--当前项目的版本,-SNAPSHOT为快照版本-->
<version>1.0-SNAPSHOT</version>
3,依赖管理
<!--依赖管理标签,标签下面可以声明N个具体依赖-->
<dependencies>
<!--具体依赖标签,里面就是坐标-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.5.0</version>
</dependency>
<!--具体依赖标签-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
4,插件管理
<!--构建-->
<build>
<!--插件管理标签,下面可以添加N个具体插件-->
<plugins>
<!--具体插件,内部就是插件的坐标-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.5.0</version>
</plugin>
</plugins>
</build>
例:
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>SpringBoot-dome</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>















Comments | NOTHING