零基础快速理解Maven

简介: 零基础快速理解Maven

@TOC

Maven概述

为什么要学习Maven?

1.Maven 作为依赖管理工具
在很多大型的框架中会用到到很多的jar包,maven可以帮助我们去管理这些jar包。包括引入,自动下载.
2.Maven 作为构建管理工具

什么是 Maven?

Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具

1、构建

Java 项目开发过程中,构建指的是使用Java 源代码,基于 HTML 的 Thymeleaf 文件,图片,配置文件的过程。
构建过程包含的主要的环节:

清理:
删除上一次构建的结果,为下一次构建做好准备
编译:
Java 源程序编译成 *.class 字节码文件
测试:
运行提前准备好的测试程序
报告:
针对刚才测试的结果生成一个全面的信息
打包:
Java工程:jar包Web工程:war包
安装:
把一个 Maven 工程经过打包操作生成的 jar 包或 war 包存入 Maven 仓库
部署
部署 jar 包:把一个 jar 包部署到 Nexus 私服服务器上
部署 war 包:借助相关 Maven 插件(例如 cargo),将 war 包部署到 Tomcat 服务器上

2.依赖

如果 A 工程里面用到了 B 工程的类、接口、配置文件等等这样的资源,那么我们就可以说 A 依赖 B。
依赖管理中要解决的具体问题:
>

jar 包的下载:使用 Maven 之后,jar 包会从规范的远程仓库下载到本地
jar 包之间的依赖:通过依赖的传递性自动完成
jar 包之间的冲突:通过对依赖的配置进行调整,让某些jar包不会被导入

Maven 的工作机制

在这里插入图片描述

maven下载,仓库配置,环境配置

为啥要配置本地仓库,远程仓库?

本地仓库:
本地仓库默认值:用户家目录/.m2/repository。由于本地仓库的默认位置是在用户的家目录下,而家目录往往是在 C 盘,也就是系统盘。将来 Maven 仓库中 jar 包越来越多,仓库体积越来越大,可能会拖慢 C 盘运行速度,影响系统性能。所以建议将 Maven 的本地仓库放在其他盘符下。
远程仓库:
配置阿里云提供的镜像仓库
Maven 下载 jar 包默认访问境外的中央仓库,而国外网站速度很慢。改成阿里云提供的镜像仓库,访问国内网站,可以让 Maven 下载 jar 包的时候速度更快。
Maven 是一个用 Java 语言开发的程序,它必须基于 JDK 来运行,需要通过 JAVA_HOME 来找到 JDK 的安装位置。
具体过程见:maven下载,仓库配置,环境配置

使用 Maven

核心概念:坐标

使用maven之前先理解maven中的核心概念

坐标

使用坐标可以在Maven的仓库中唯一的定位到一个jar包。
涉及到三个向量:
groupId:公司或组织域名的倒序,通常也会加上项目名称

artifactId:模块的名称,将来作为 Maven 工程的工程名
version:模块的版本号,根据自己的需要设定
例如:
在这里插入图片描述

Maven 的构建命令

清理操作

mvn clean

效果:删除 target 目录

编译操作

主程序编译:mvn compile
测试程序编译:mvn test-compile
主体程序编译结果存放的目录:target/classes
测试程序编译结果存放的目录:target/test-classes

测试操作

mvn test
测试的报告存放的目录:target/surefire-reports

打包操作

mvn package
打包的结果——jar 包,存放的目录:target

安装操作

mvn install

安装的效果是将本地构建过程中生成的 jar 包存入 Maven 本地仓库。这个 jar 包在 Maven 仓库中的路径是根据它的坐标生成的。
另外,安装操作还会将 pom.xml 文件转换为 XXX.pom 文件一起存入本地仓库。所以我们在 Maven 的本地仓库中想看一个 jar 包原始的 pom.xml 文件时,查看对应 XXX.pom 文件即可,它们是名字发生了改变,本质上是同一个文件。

相关文章
|
缓存 Java 程序员
Spring中异步注解@Async的使用、原理及使用时可能导致的问题
本文主要介绍了Spring中异步注解的使用、原理及可能碰到的问题,针对每个问题文中也给出了方案。希望通过这篇文章能帮助你彻底掌握`@Async`注解的使用,知其然并知其所以然!
14373 4
|
安全 Shell Linux
【Shell 命令集合 系统管理 】Linux 切换当前用户身份为另一个用户 su命令 使用指南
【Shell 命令集合 系统管理 】Linux 切换当前用户身份为另一个用户 su命令 使用指南
640 1
|
存储 JavaScript API
Vue(第十五课)Pinia组件库的基本知识(一)
Vue(第十五课)Pinia组件库的基本知识(一)
309 0
|
3月前
|
机器学习/深度学习 存储 缓存
DNS解析中TTL参数深度解析
本文深度解析DNS解析中的TTL参数,涵盖技术规范、优化策略及工程实践。内容包括TTL定义、分层缓存机制、企业配置建议、变更管理流程、特殊场景应对方案及前沿技术演进,助你全面掌握TTL优化方法。
453 1
|
3月前
|
SQL 人工智能 JSON
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
本文整理自阿里云的高级技术专家、Apache Flink PMC 成员李麟老师在 Flink Forward Asia 2025 新加坡[1]站 —— 实时 AI 专场中的分享。将带来关于 Flink 2.1 版本中 SQL 在实时数据处理和 AI 方面进展的话题。
278 0
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
|
缓存 应用服务中间件 Apache
javax.imageio.IIOException: Can‘t create output stream!(验证码图片不显示)
javax.imageio.IIOException: Can‘t create output stream!(验证码图片不显示)
|
编解码 开发工具 Android开发
Android平台GB28181设备接入侧如何实现GB28181-2022实时快照
GB/T28181-2022标准中明确了快照的具体要求,包括图像抓拍配置命令的发送与接收流程。源设备需向目标设备发送包含传输路径和会话ID等信息的命令,目标设备完成图像传输后,通过IETF RFC 3428中的MESSAGE方法发送图像抓拍传输完成的通知。图像格式推荐使用JPEG,且分辨率应与主码流相同。技术实现上,如使用大牛直播SDK在Android平台上,可通过创建`SnapShotImpl`类并调用`capture()`方法实现快照功能,之后将JPEG格式的快照文件上传至国标平台。
279 2
|
前端开发 Java 网络架构
为什么Controller就报错404,而改为RestController就不报错了
为什么Controller就报错404,而改为RestController就不报错了
401 0
|
网络协议 Linux
关于xenomai3 RTnet的一点记录
Xenomai3的RTnet协议栈支持TCP和UDP,但不包括IGMP,且ARP支持有限,可能导致延迟或错误。服务端仅允许单个客户端连接。启用`CONFIG_XENO_DRIVERS_NET_ADDON_PROXY_ARP`时,RTnet与rtproxy MAC相同,否则rtproxy不支持ARP。TCP/IP的实时性不足,但Xenomai4的EVL核聚焦二层实时网络。更多详情见链接。
319 0