Maven 学习笔记(一)项目构建 | 相关概念 | GAV坐标 | 依赖管理
文章目录
- 参考资料
- 运行环境
- 一、Maven概述
-
- 1.1 简介
- 1.2 作用
- 1.3 原理
- 二、Maven相关概念
-
- 2.1 pom.xml的由来
- 2.2 GAV坐标
- 2.3 构建和自动化构建
-
- Maven常见命令以及说明
- 2.4 项目关系
- 2.5 统一管理目标JAR包的版本
- 2.6 依赖管理
- 2.7 配置Maven本地仓库
- 2.8 添加国内阿里云镜像
- 三、基于 IDEA 开发 Maven工程
-
- 3.1 下载Maven压缩包
- 3.2 设置 Maven
- 3.3 添加Maven工程的两种方式
-
- 方式一:创建新项目时选择Maven
- 方式二:给当前项目添加Maven支持
- 四、总结
参考资料
SPOC
运行环境
- Maven3.8
- JDK8
- IDEA 2021.1 专业版
一、Maven概述
1.1 简介
传统Java开发局限性
-
新建每个项目都要手动导入JAR包
Jar包之间可能相互依赖
Jar包之间可能相互冲突
每个项目都要导包,几遍是同类型的项目 -
项目层面
一个大型项目可能需要分成多个模块,模块之间如何协调和访问
打包麻烦
Maven是一款自动化构建工具,专注服务于Java平台的项目构建和依赖管理
常见的项目构建工具除了Maven还有:Make、Ant、Gradle
目前,Maven最常用,而Gradle逐渐流行起来
1.2 作用
Maven 统一集中管理好所有的依赖包,不需要程序员再去寻找。
对应第三方组件用到的共同 jar,Maven 自动解决重复和冲突问题。
Maven 作为一个开放的架构,提供了公共接口,方便同第三方插件集成。程序员可以将自己需要的插件,动态地集成到 Maven,从而扩展新的管理功能。
Maven 可以统一每个项目的构建过程,实现不同项目的兼容性管理。
Maven支持自动构建,包括构建,编译、测试、运行、打包、安装、部署六个环节
1.3 原理
Maven项目依赖的环境(Jar)包都在仓库中(Ant项目依赖的jar包需要手动导入),依赖不是导入
*仓库,管理者全部Java产品的Jar包
默认:https://repo1.maven.org/maven2/
镜像
本地仓库:项目依赖的库
当我们从maven中获取jar包的时候,maven首先会在本地仓库中查找,若本地仓库有则返回,如果没有则从*仓库中获取包,并在本地库中保存
二、Maven相关概念
2.1 pom.xml的由来
pom
其实是 Project Object Model
的缩写,即项目对象模型。
作用:将Java工程的相关信息封装成对象作为便于操作和管理的模型。
Maven工程的核心配置就是通过该文件的
现 JavaEE开发领域普遍认同的观点: 约定 > 配置 > 编码
,意思是能用配置解决的问题就不编码,能基于约定的就不配置,而Maven正是因为指定了、约定了文件保存的目录才能够对Java工程进行自动化构建。
2.2 GAV坐标
在pom.xml中,通常使用如下三个向量在Maven的仓库中唯一标识一个Maven工程
向量名称 | 作用描述 |
---|---|
groupId | 公司或组织的域名倒序+当前项目名称,比如:com.uni.hello |
artifactId | 当前项目的模块名称 |
version | 当前模块的版本,默认为1.0-SNAPSHOT,意为开发中的1.0版本 |
如何通过坐标在本地仓库查找jar包?
将GAV三个坐标按序连接,到仓库中查找,比如 com/uni/hello/1.0-SNAPSHOP.jar
注:自己的 Maven工程必须执行安装操作才会进入到本地仓库,安装的命令是 mvn install
2.3 构建和自动化构建
以Web工程为例:
- 通过浏览器访问Java程序时就必须将包含Java程序的Web工程编译的结果"拿" 到服务器上的指定目录下,并启动服务器才行。这个“拿”的过程称为
部署
。 - Web工程中除了Java程序和JSP/HTML页面、图片等静态资源外,还包括第三方框架的jar包以及各种各样的配置文件。所有的这些资源都必须按照正确的目录结构部署到服务器上,项目才可以正常运行。
构建 就是以我们编写的Java代码、配置框架文件、国际化等其他资源文件、JSP页面和图片等静态资源作为“原材料”,去“生产”出一个可运行项目的过程。
项目构建所需要的环节主要有六个,分别是:
清理 -> 编译 -> 测试 -> 报告 -> 打包 -> 部署
显然,如果手动的构建一个项目,还是比较麻烦的。
而Maven则支持自动化构建,其本质是:可以自动将上述构建过程从起点一直执行到终点
比如:mvn install
命令,(在工程POM文件所在位置)
它的租用是在本地仓库生成当前项目的jar包,其他项目就可以直接依赖这个jar包。
Maven常见命令以及说明
Maven命令 | 作用描述 |
---|---|
mvn clean | 清理,将以前编译得到的旧的 class 字节码文件删除 |
mvn compile | 编译,将Java 源程序编译成 class 字节码文件。 |
mvn test | 测试,并生成测试报告 |
mvn package | 动态 web工程打 war包,Java工程打 jar 包。 |
mvn install | 将项目生成 jar 包放在仓库中,以便别的模块调用 |
… | … |
如何使用这些命令?
首先要记住一点,mvn命令需要在有pom.xml
的文件位置里执行,所以一般在IDEA里可以直接进行Maven的操作。
其次,如果想通过命令行执行Maven命令记得配置环境变量,和JDK环境变量配置一样,先配置MAVEN_HOME指定Maven的路径,然后在系统变量Path里添加MAVEN_HOME/bin
,因为可执行的脚本mvn就是在这个路径中的,配置过后在任何位置都可以使用mvn命令了,不过在打包的时候记得要在pom.xml所在的目录下。
IDEA集成了Maven的环境,自带Mavne管理的插件,所以不需要去手动输入这些命令
IDEA提供的Maven插件通常在右侧的工具栏中,可以看到它提供了所有的生命周期,若想执行哪一个,双击即可
2.4 项目关系
继承关系: Maven项目,是在pom.xml文件中加入依赖关系,其中的标签<dependency>
则可以把其他项目的jar引入到当前的项目。或者是自动引入其他项目所依赖的另外项目
聚合关系: 大项目分成几个模块项目,一般有一个统一的父项目领导。
- 父项目是
pom
类型 - 子项目为
jar
或者war
,若子项目还是其他项目的父项目,那么该子项目也可一定是pom类型 - 有继承关系后,子项目中会出现
<parent>
标签。若果子项目的<groupId>
和<version>
和父项目相同
推荐阅读
-
前端改进章节(八)JS 高级 6 堆和栈的内存管理
-
JavaScript 数百份自学笔记 - 15
-
自定义 Lua 解析器管理器 ------- Evolution Script V0.5
-
vben 管理重置按钮单独获取点击重置图表(vue3)
-
左宗棠收复*(一)
-
自然语言处理实用入门 ---- 第 4 课:中文解析原理及相关组件介绍--《自然语言处理》中的主要解析算法、组件和服务 ...
-
阿里云 x 正泰太阳能 | 用 ET 的 "工业大脑 "在一秒钟内解决电池芯缺陷问题
-
人民日报 "字字铿锵有力,选一句为自己打气。
-
我的朋友年薪 200 万美元,他告诉我一个残酷的事实:兼职工作表面上看起来很稳定
-
操作系统原理和源代码示例:Linux 实现时间管理和定时器源代码