Maven

Maven

maven简介

在这里插入图片描述

官网:http://maven/apache/org/

1:概念

是一个软件(特别是Java软件)项目管理及自动构建工具,基于项目对象模型,简单来说‘
我们做一个 Java 项目,需要第三方依赖包要怎么办呢,将别人打好的 Jar 包下载到本地,然后手动指定给项目。操作麻烦,比如版本控制,需要新版本怎么办,重新下载,重新指定。而用了 Maven 之后,需要什么包,直接在 pom.xml 中添加几行 xml 代码,指定包名、版本等,就可以了

2:maven的构建(从源码到成品的整个过程)

maven对构建(build)的过程进行了抽象和定义,这个过程被称为构建的生命周期(lifecycle)。
构建是面向过程的,就是一些步骤,完成项目代码的校验-初始化-编译-测试-打包-集成测试-安装-部署
maven支持的构建有
1:校验:检验maven的配置是否生效或正确
2:初始化:初始化数据
3:clean(清理),把之前项目编译的代码都删掉,为新的编译代码做准备
4:编译:把源代码变成成可执行文件 Java–class,这个是批量的,可以同时把成千上百个文件编
译成class文件,和javac不一样,javac是编译一个文件
5:测试:maven可以执行测试程序代码,验证你的功能是否正确,批量的
6:打包:把你项目中的所有的class文件,配置文件等所有资源放到一个压缩文件中,这个压缩文件就是项目的结果文件,通常Java程序,压缩文件是jar扩展名,web项目扩展名是war
7:安装:把6中生成的文件jar,war安装到本地仓库
8:部署:把项目发布到服务器上

3:maven能做什么

1):maven可以管理jar包
2):自动下载jar和它的文档,源代码
3):管理jar直接的依赖 a.jar需要b.jar maven会自动下载b.jar
4):管理jar需要的版本
5):帮你编译程序,把java编译成class
6) :帮你测试你的代码是否正确
7):帮你打包文件,形成jar文件或者war文件
7):帮你部署项目

4:maven工具的的安装和配置

4.1):需要从maven官网下载maven的安装包
进入Maven官网的下载页面:http://maven.apache.org/download.cgi
在这里插入图片描述
在这里插入图片描述
然后下载后解压一个你的电脑目录

在这里插入图片描述
解压后的maven目录,图中箭头localRepository是我自己建的本地仓库

在这里插入图片描述
bin目录下的mvn.cmd:一个maven命令,能够执行maven的构建项目
在这里插入图片描述
conf目录下settings.xml是maven这个工具的配置文件

4.2:配置环境变量
在系统的环境变量中,指定一个M2-HOME的名称,指定的是maven的工具的安装目录

在这里插入图片描述

PATH配置
在这里插入图片描述
然后可以安装目录下bin打开cmd命令,输入mvn -v
在这里插入图片描述
出现这个命令,就说明你的maven配置正确

5:Maven核心概念

1):pom:一个文件,名称是pom.xml pom翻译过来过来就是项目对象模型
maven把一个项目当成一个模型来使用,控制maven构建项目的过程,管理jar依赖
2):约定的目录结构,maven的项目的目录和文件的位置都是有规定,
3):坐标:唯一的一个字符串标识,标识资源的
4):依赖管理:管理你的项目可以使用的jar文件
5):仓库管理:你的资源存放的位置
6):生命周期:我们maven工具构建项目的过程

1.1:pom(project Object Model)项目对象模型,maven把一个项目的结构和内容抽象成一个模型
在xml文件中声明

modelVersion:maven模型的版本,4.0.0
groupId:组织id,一般是公司域名的倒写
artifactId:项目名称
version:项目的版本号
说明:这三个斜体加一起来就是一个坐标
packaging:maven项目的打包方式。默认jar
dependenciesh和dependency:项目中要使用的各种资源说明
比如我的项目要使用spring

<!--spring依赖-->
<dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.5.RELEASE</version>
    </dependency>
    </dependencies>

groupId,artifactId,version对应的都是仓库的文件夹
在这里插入图片描述
properties:设置属性
build:构建项目时,配置信息,例如指定编译Java的jdk版本
plugins:插件
2.1Maven工程约定的目录结构约定是大家都遵循的一个规则

maven中约定的目录结构
Hello # 根目录,也就是工程名
|----src #
|-----|----main #放的你主程序的Java代码和配置文件
|-----|------|-----java # 你的程序包和包中的Java文件
|-----|------|-----resources #你的Java程序中要用的资源文件
|-----|----test #放测试程序用的代码和文件(可以没有)
|-----|-----|-----java #放测试程序包和包中的Java文件
|-----|------|-----resources #测试程序中要用的资源文件
|----pom.xml #maven的核心文件(maven项目中必须有)

4.1依赖范围使用scopa表示
scopa的值有compile、test、provided、runtime、system
scopa表示依赖的范围,也就是maven在构建项目的哪些阶段中起作用
compile:表示编译范围,指A在编译时依赖B,该范围为默认依赖范围。编译范围的依赖会用在编译,测试,运行,由于运行时需要,所以编译范围的依赖会被打包。

provide:provide依赖只有当jdk或者一个容器已提供该依赖之后才使用。provide依赖在编译和测试时需要,在运行时不需要。例如:servlet api被Tomcat容器提供了。

runtime:runtime依赖在运行和测试系统时需要,但在编译时不需要。例如:jdbc的驱动包。由于运行时需要,所以runtime范围的依赖会被打包。

test:test范围依赖在编译和运行时都不需要,只在测试编译和测试运行时需要。例如:Junit。由于运行时不需要,所以test范围依赖不会被打包。

system:system范围依赖与provide类似,但是必须显示的提供一个对于本地系统中jar文件的路径。一般不推荐使用
在这里插入图片描述

5.1:Maven仓库就是放置所有JAR文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖JAR,这节省了磁盘资源,Maven仓库能帮助我们管理构件
maven的中央仓库
https://mvnrepository.com

配置maven私服镜像地址:
在国内,由于你懂得的原因,所以说我们不能够直接的访问默认的中央仓库地址,所以说为了方便起见,我们一般使用的是maven的镜像仓库地址,在maven的镜像仓库地址中,网速比较快的,当属阿里云的镜像仓库地址了,该镜像仓库地址如下:

<!--阿里云镜像-->
<mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>       
</mirror> 

该地址的配置地点在maven根目录“conf”下的“settings.xml”文件中,打开该文件,在“mirrors”标签下添加上述代码即可。

配置本地maven仓库地址:
为了管理方便,我们一般会手动的配置一下maven的本地仓库地址,其配置地点还是在maven根目录“conf”下的“settings.xml”文件中,在这里,我的配置地点如下:

配置本地仓库位置,目录中不能有中文:

<!--配置本地仓库位置,目录中不能有中文 -->
 <localRepository>D:/apache-maven-3.3.9/localRepository</localRepository>

6.1校验-初始化-编译-测试-打包-集成测试-安装-部署就是maven的生命周期
maven通过命令完成生命周期的执行
mvn clean:清理编译的项目
mvn compile:编译项目
mvn test:测试项目(运行测试类)
mvn package:负责将我们的项目打包
mvn install:将这个项目安装到仓库中
注意:执行以上命令必须在命令进入pom.xml 所在目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值