一,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
Warning: Undefined variable $return_smiles in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 1109