文章目录
🔥Maven简介
Maven是一个项目管理工具。它可以帮助程序员构建工程,管理jar包,编译代码,完成测试,项目打包等等。
⭐Maven工具是基于POM(Project Object Model,项目对象模型)实现的。在Maven的管理下每个项目都相当于是一个对象。
⭐Maven标准化了项目的构建。即对项目结构,构建命令等进行了标准化定义。
⭐Maven提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源类库。
⭐Maven是跨平台的,在Windows、Linux、Mac上,都可以使用同样的命令。
Maven的作用
一键构建
我们的项目往往都要经历编译、测试、运行、打包、安装 ,部署等一系列过程,这些过程称之为构建。通过Maven工具,可以使用简单的命令轻松完成构建工作。
依赖管理
传统的Web项目中,我们必须将工程所依赖的jar包复制到工程中,导致了工程的变得很大。如果一个公司具有相同架构的项目有十个,那么就需要将这一份jar包复制到十个不同的工程中,非常浪费
资源。
同样的项目内容,传统Web项目大小如下:
而使用Maven构建的项目大小如下:
这说明了传统Web项目中大部分磁盘空间是被jar包占据,而Maven项目中一定没有jar包,那没有jar包的项目是怎么运行的呢?
maven工程中不直接将jar包导入到工程中,而是有一个专门存放jar包的仓库,仓库中的每个jar包都有自己的坐标。maven工程中只要配置jar包坐标即可,运行项目需要使用jar包时,根据坐标即可从maven仓库中拿到jar包即可运行。
🔥Maven的安装
下载
进入https://maven.apache.org/download.cgi 即可完成下载
安装
解压下载好的安装文件,解压后目录结构如下:
⭐bin:存放maven的命令
⭐boot:存放maven本身的引导程序,如类加载器等
⭐conf:存放maven的配置文件
⭐lib:存放maven本身运行所需的jar包
配置环境变量
由于Maven是由Java语言开发的,运行时依赖Java环境,所以要在计算机的环境变量中配置 JAVA_HOME
为了更方便的使用Maven命令,需要在环境变量中配置 MAVEN_HOME和 Path
查看版本
打开CMD命令窗口,输入 mvn -v ,显示Maven版本和Java版本,证明安装成功。
🔥Maven工程的类型和结构
Maven工程类型
⭐POM工程
POM工程是逻辑工程,Maven并不会对该类型工程做打包处理,这些工程往往不包含具体的业务,而是用来整合其他工程的。
⭐JAR工程
普通Java工程,在打包时会将项目打成jar包。
⭐WAR工程
JAVA Web工程,在打包时会将项目打成war包。
Maven工程结构
接下来我们通过一个WAR工程学习Maven工程的结构
文件目录结构:
⭐src:源代码
⭐target:编译生成的文件
⭐pom.xml:Maven工程配置文件,如坐标信息等。
项目结构:
⭐src/main/java:存放项目的java 文件
⭐src/main/resources:存放项目资源文件,如配置文件
⭐src/test/java:存放项目的测试文件
⭐src/test/resources:存放测试时的资源文件
🔥一键构建_项目的生命周期
使用maven完成项目的构建的过程中,包括:验证、编译、测试、打包、部署等过程,maven将这些过程规范为项目构建的生命周期。
生命周期 | 所做工作 |
---|---|
验证 validate | 验证项目是否正确 |
编译 compile | 源代码编译 |
测试 Test | 使用适当的单元测试框架(例如junit)运行测试。 |
打包 package | 创建JAR/WAR包 |
检查 verify | 对集成测试的结果进行检查,以保证质量达标。 |
安装 install | 安装打包的项目到本地仓库,以供其他项目使用。 |
部署 deploy | 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程。 |
maven有三套相互独立的生命周期。分别是
构建生命周期
clean生命周期(清理构建后的文件)
site生命周期(生成项目报告)
🔥一键构建_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仓库类型
本地仓库
本地仓库指用户计算机中的文件夹。用来存储从远程仓库或中央仓库下载的jar包,只有下载到本地仓库的jar包才能使用,项目使用jar包时优先从本地仓库查找。
远程仓库
远程仓库一般指私服,它是架设在局域网的仓库服务,可以从中央仓库下载资源,供局域网使用,从而减少每个程序员都从中央仓库下载浪费的带宽。
如果项目需要的jar包本地仓库没有,则会去远程仓库下载,下载到本地仓库即可使用。
远程仓库不是必须配置的,如果本地仓库没有jar包
也没有配置远程仓库,则会直接从中央仓库下载。
中央仓库
中央仓库是互联网上的服务器,是Maven提供的最大的仓库,里面拥有最全的jar包资源。
如果项目需要的jar包,本地仓库和远程仓库都没有,则会去中央仓库下载,下载到本地仓库使用。
Maven中央仓库访问页面:https://mvnrepository.com/
中央仓库访问速度较慢,我们一般都会配置镜像代理中央仓库的下载请求,
如阿里镜像、华为镜像等。
🔥依赖管理_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配置文件。
之后,点击File — New Projects Settings — Settings for New Projects,再设置一遍Maven,使得新项目也可以使用同样的Maven配置。
🔥Maven工程开发_构建Maven工程
接下来我们构建一个Maven的Web工程:
⭐ 打开 idea,选择创建一个新工程
⭐ 选择Maven工程,并使用maven的web工程模板
⭐ 点击 Next 填写项目信息
⭐ 点击 Next,此处不做改动,点击Finish构建项目
⭐ 手动添加src/main/java目录,此时该目录还不能写Java代码。
⭐ 将src/main/java目录设置为Java代码目录。