> 文章列表 > 史上最全Maven教程(一)

史上最全Maven教程(一)

史上最全Maven教程(一)

文章目录

    • 🔥Maven简介
    • 🔥Maven的安装
    • 🔥Maven工程的类型和结构
    • 🔥一键构建_项目的生命周期
    • 🔥一键构建_Maven常用命令
    • 🔥依赖管理_Maven仓库类型
    • 🔥依赖管理_Maven配置文件
    • 🔥Maven工程开发_Idea配置Maven插件
    • 🔥Maven工程开发_构建Maven工程

🔥Maven简介

史上最全Maven教程(一)

Maven是一个项目管理工具。它可以帮助程序员构建工程,管理jar包,编译代码,完成测试,项目打包等等。

⭐Maven工具是基于POM(Project Object Model,项目对象模型)实现的。在Maven的管理下每个项目都相当于是一个对象。
⭐Maven标准化了项目的构建。即对项目结构,构建命令等进行了标准化定义。
⭐Maven提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源类库。
⭐Maven是跨平台的,在Windows、Linux、Mac上,都可以使用同样的命令。

Maven的作用

史上最全Maven教程(一)

一键构建

我们的项目往往都要经历编译、测试、运行、打包、安装 ,部署等一系列过程,这些过程称之为构建。通过Maven工具,可以使用简单的命令轻松完成构建工作。

依赖管理

传统的Web项目中,我们必须将工程所依赖的jar包复制到工程中,导致了工程的变得很大。如果一个公司具有相同架构的项目有十个,那么就需要将这一份jar包复制到十个不同的工程中,非常浪费
资源。

同样的项目内容,传统Web项目大小如下:
史上最全Maven教程(一)

而使用Maven构建的项目大小如下:
史上最全Maven教程(一)

这说明了传统Web项目中大部分磁盘空间是被jar包占据,而Maven项目中一定没有jar包,那没有jar包的项目是怎么运行的呢?

史上最全Maven教程(一)

maven工程中不直接将jar包导入到工程中,而是有一个专门存放jar包的仓库,仓库中的每个jar包都有自己的坐标。maven工程中只要配置jar包坐标即可,运行项目需要使用jar包时,根据坐标即可从maven仓库中拿到jar包即可运行。

🔥Maven的安装

史上最全Maven教程(一)

下载

进入https://maven.apache.org/download.cgi 即可完成下载
史上最全Maven教程(一)

安装

解压下载好的安装文件,解压后目录结构如下:
史上最全Maven教程(一)

⭐bin:存放maven的命令
⭐boot:存放maven本身的引导程序,如类加载器等
⭐conf:存放maven的配置文件
⭐lib:存放maven本身运行所需的jar包

配置环境变量

由于Maven是由Java语言开发的,运行时依赖Java环境,所以要在计算机的环境变量中配置 JAVA_HOME
史上最全Maven教程(一)

为了更方便的使用Maven命令,需要在环境变量中配置 MAVEN_HOME Path

史上最全Maven教程(一)
史上最全Maven教程(一)

查看版本

打开CMD命令窗口,输入 mvn -v ,显示Maven版本和Java版本,证明安装成功。
史上最全Maven教程(一)

🔥Maven工程的类型和结构

史上最全Maven教程(一)

Maven工程类型
⭐POM工程
POM工程是逻辑工程,Maven并不会对该类型工程做打包处理,这些工程往往不包含具体的业务,而是用来整合其他工程的。

⭐JAR工程
普通Java工程,在打包时会将项目打成jar包。
⭐WAR工程
JAVA Web工程,在打包时会将项目打成war包。

Maven工程结构

接下来我们通过一个WAR工程学习Maven工程的结构

文件目录结构:
史上最全Maven教程(一)

⭐src:源代码
⭐target:编译生成的文件
⭐pom.xml:Maven工程配置文件,如坐标信息等。

项目结构:
史上最全Maven教程(一)

⭐src/main/java:存放项目的java 文件
⭐src/main/resources:存放项目资源文件,如配置文件
⭐src/test/java:存放项目的测试文件
⭐src/test/resources:存放测试时的资源文件

🔥一键构建_项目的生命周期

史上最全Maven教程(一)
使用maven完成项目的构建的过程中,包括:验证、编译、测试、打包、部署等过程,maven将这些过程规范为项目构建的生命周期。

生命周期 所做工作
验证 validate 验证项目是否正确
编译 compile 源代码编译
测试 Test 使用适当的单元测试框架(例如junit)运行测试。
打包 package 创建JAR/WAR包
检查 verify 对集成测试的结果进行检查,以保证质量达标。
安装 install 安装打包的项目到本地仓库,以供其他项目使用。
部署 deploy 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程。
maven有三套相互独立的生命周期。分别是
构建生命周期
clean生命周期(清理构建后的文件)
site生命周期(生成项目报告)

🔥一键构建_Maven常用命令

史上最全Maven教程(一)
在Maven构建项目的每一步都可以使用一句简单的命令完成,接下来我们学习这些命令:

命令 作用
mvn clean 清除编译的class文件,即删除target目录。
mvn validate 验证项目是否正确
mvn compile 编译maven项目
mvn test 编译maven项目及运行测试文件
mvn package 编译maven项目及运行测试文件,并打包
mvn install 编译maven项目及运行测试文件并打包,并发布到本地仓库
mvn deploy 部署项目到远程仓库
mvn tomcat7:run 使用tomcat运行项目
Maven依赖插件来执行命令,
比如clean、validate等命令是maven自带的,
tomcat7命令是引入的第三方插件。

🔥依赖管理_Maven仓库类型

史上最全Maven教程(一)

本地仓库

本地仓库指用户计算机中的文件夹。用来存储从远程仓库或中央仓库下载的jar包,只有下载到本地仓库的jar包才能使用,项目使用jar包时优先从本地仓库查找。

远程仓库

远程仓库一般指私服,它是架设在局域网的仓库服务,可以从中央仓库下载资源,供局域网使用,从而减少每个程序员都从中央仓库下载浪费的带宽。

如果项目需要的jar包本地仓库没有,则会去远程仓库下载,下载到本地仓库即可使用。

远程仓库不是必须配置的,如果本地仓库没有jar包
也没有配置远程仓库,则会直接从中央仓库下载。

中央仓库

中央仓库是互联网上的服务器,是Maven提供的最大的仓库,里面拥有最全的jar包资源。

如果项目需要的jar包,本地仓库和远程仓库都没有,则会去中央仓库下载,下载到本地仓库使用。

Maven中央仓库访问页面:https://mvnrepository.com/

中央仓库访问速度较慢,我们一般都会配置镜像代理中央仓库的下载请求,
如阿里镜像、华为镜像等。

🔥依赖管理_Maven配置文件

史上最全Maven教程(一)

本地仓库的默认位置是 ${user.dir}/.m2/repository , ${user.dir}表示 windows用户目录,我们可以通过修改 ${MAVEN_HOME}\\conf\\settings.xml ,修改本地仓库的位置。

配置本地仓库
settings 中添加如下标签:

<!-- 本地仓库路径 -->
<localRepository>F://repository</localRepository>

配置镜像
由于中央仓库访问速度较慢,可以配置镜像代理中央仓库的下载请求。在 settings 下的 mirrors 中添加如下标签即可配置镜像:

<mirror>  <!-- 指定镜像ID --><id>nexus-aliyun</id>  <!-- 匹配中央仓库。--><mirrorOf>central</mirrorOf><!-- 指定镜像名称 -->    <name>Nexus aliyun</name>  <!-- 指定镜像路径 -->
<url>http://maven.aliyun.com/nexus/content/groups/public</url>  
</mirror>

配置JDK版本
创建maven项目的时候,默认使用的JDK是1.5版本,验证语法、编译、运行时都会按照JDK1.5操作,这样就有很多语法无法使用。我们本机安装的JDK是JDK11,可以配置maven按照JDK11创建项目。
settings 下的 profiles 中添加如下标签即可配置JDK版本:

<profile>  <id>jdk11</id>    <activation>  <activeByDefault>true</activeByDefault>    <jdk>11</jdk>  </activation>    <properties>  <maven.compiler.source>11</maven.compiler.source>    <maven.compiler.target>11</maven.compiler.target>    <maven.compiler.compilerVersion>11</maven.compiler.compilerVersion>  </properties>  
</profile>

🔥Maven工程开发_Idea配置Maven插件

在使用Idea开发项目时,可以整合Maven插件进行一键构建和依赖管理。Idea自带Maven插件,我们也可以指定自己下载的Maven插件。

依据图片指示,选择本地maven安装目录,指定settings配置文件。

史上最全Maven教程(一)

之后,点击File — New Projects Settings — Settings for New Projects,再设置一遍Maven,使得新项目也可以使用同样的Maven配置。

史上最全Maven教程(一)

🔥Maven工程开发_构建Maven工程

史上最全Maven教程(一)

接下来我们构建一个Maven的Web工程:

⭐ 打开 idea,选择创建一个新工程
史上最全Maven教程(一)

⭐ 选择Maven工程,并使用maven的web工程模板
史上最全Maven教程(一)

⭐ 点击 Next 填写项目信息
史上最全Maven教程(一)
史上最全Maven教程(一)

⭐ 点击 Next,此处不做改动,点击Finish构建项目

史上最全Maven教程(一)

⭐ 手动添加src/main/java目录,此时该目录还不能写Java代码。

⭐ 将src/main/java目录设置为Java代码目录。
史上最全Maven教程(一)