Maven(黑马)

article/2025/8/1 21:53:43

Maven 是一个强大的项目管理和构建自动化工具,主要用于 Java 项目的构建、依赖管理和文档生成。它通过使用 POM(Project Object Model)文件来管理项目的配置和依赖关系,从而实现项目的自动化构建和管理。以下是 Maven 的一些核心概念和功能:

1. Maven 的核心概念

(1)POM 文件

POM(Project Object Model)文件是 Maven 的核心配置文件,它是一个 XML 文件,位于项目的根目录下,文件名为 pom.xml。POM 文件定义了项目的依赖、插件、构建生命周期、配置等信息。

(2)生命周期

Maven 的生命周期是一系列的阶段,用于定义项目的构建过程。Maven 有三个主要的生命周期:

  • Clean Lifecycle:清理项目,删除目标目录(target)。

    • clean:清理项目。

  • Default Lifecycle:构建项目,包括编译、测试、打包、部署等。

    • validate:验证项目是否正确。

    • compile:编译项目代码。

    • test:运行测试。

    • package:打包项目(如 JAR、WAR)。

    • install:将包安装到本地仓库。

    • deploy:将包部署到远程仓库。

  • Site Lifecycle:生成项目文档和站点。

(3)依赖管理

Maven 使用中央仓库来管理依赖。当项目需要某个依赖时,Maven 会从本地仓库中查找,如果本地仓库中没有,则从远程仓库(如 Maven Central)下载并存储到本地仓库。依赖的版本管理可以通过 POM 文件中的 <dependency> 标签来配置。

(4)插件

Maven 的功能通过插件来扩展。插件是一组可重用的代码,用于执行特定的任务,如编译代码、打包项目、运行测试等。插件的生命周期与 Maven 的生命周期紧密集成。例如,maven-compiler-plugin 用于编译代码,maven-surefire-plugin 用于运行测试。

2.依赖配置

<dependencies><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency>
</dependencies>

3.依赖管理

依赖itheima下的projectB模块,如下

<dependencies><dependency><groupId>com.itheima</groupId><artifactId>maven-projectB</artifactId><version>1.0_SNAPSHOT</version></dependency>
</dependencies>

<dependencies><dependency><groupId>com.itheima</groupId><artifactId>maven-projectB</artifactId><version>1.0_SNAPSHOT</version>//排除<exclusions><exclusion><artifactId>maven-projectB</artifactId><groupId>com.itheima</groupId></exclusion></exclusions></dependency>
</dependencies>

4.依赖范围

compile(编译范围)

  • 描述:这是默认的依赖范围。如果未显式指定依赖范围,则默认为 compile

<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.3.23</version><scope>compile</scope> <!-- 默认值,可以省略 -->
</dependency>

provided(已提供范围)

  • 描述:表示依赖在编译和测试阶段可用,但在运行时由运行环境(如应用服务器)提供。

<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope>
</dependency>

runtime(运行时范围)

  • 描述:表示依赖在运行和测试阶段可用,但在编译阶段不需要。
  • <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version><scope>runtime</scope>
    </dependency>

    test(测试范围)

  • 描述:表示依赖仅在测试编译和测试执行阶段可用。

  • <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
    </dependency>

    system(系统范围)

  • 描述:类似于 provided,但依赖必须显式指定路径。
     

import(导入范围)

  • 描述:仅用于依赖管理(dependencyManagement)部分,用于导入其他 POM 文件中的依赖管理配置。

optional(可选范围)

  • 描述:虽然不是独立的范围,但可以与上述范围配合使用。

5.生命周期

关注如下五阶段:
clean   compile test  package  install

以上。


http://www.hkcw.cn/article/MtmbuVNjpq.shtml

相关文章

项目练习:element ui 的icon放在button的右侧

文章目录 一、需求描述二、左侧实现三、右侧实现 一、需求描述 我们知道&#xff0c;element ui的button一般都会配置一个icon 这个icon默认是放在左侧的。 如何让它放在右侧了&#xff1f; 二、左侧实现 <el-buttontype"primary"plainicon"el-icon-d-arr…

大连一景区日撒1000斤蚬子 吸引游客赶海乐

近两日,多名网友分享了在辽宁省大连市夏家河子海滨浴场偶遇工作人员开着铲车、三轮车给游客撒蚬子赶海的情景。景区回应称,在沙滩上撒蚬子是为了让赶海的游客都能挖到东西。这两天,景区每天需要撒约1000斤的蚬子。此外,还有巴掌大的鲍鱼和海螺,如果游客捡到可以兑换礼品。…

位运算 #常见位运算总结 #题解

系列文章目录 leetcode - 双指针问题_leetcode双指针题目-CSDN博客 leetcode - 滑动窗口问题集_leetcode 滑动窗口-CSDN博客 高效掌握二分查找&#xff1a;从基础到进阶-CSDN博客 leetcode - 前缀和_前缀和的题目-CSDN博客 动态规划 - 斐波那契数列模型-CSDN博客 目录 系…

openpnp - 给M4x0.7mm的直油嘴加油的工具选择

文章目录 openpnp - 给M4x0.7mm的直油嘴加油的工具选择概述如果换上带卡口的M4x0.7直油嘴END openpnp - 给M4x0.7mm的直油嘴加油的工具选择 概述 X导轨用了一个HG15的滑块 滑块上的注油口的黄油嘴是M4x0.7mm的直油嘴。 外表面是6边形的柱子&#xff0c;没有可以卡住加油嘴工…

SSL/TLS 协议详解:安全通信的基石

一、概述 SSL&#xff08;Secure Sockets Layer&#xff09; 及其继任者 TLS&#xff08;Transport Layer Security&#xff09; 是位于 传输层&#xff08;TCP&#xff09;与应用层之间 的加密协议&#xff0c;用于在网络通信中实现 机密性、身份认证和数据完整性。 核心目标…

象棋里的卧槽马、侧面虎、金钩马的方位与解析

在中国象棋里&#xff0c;根据马的方位&#xff0c;有不同的称谓&#xff0c;比如卧槽马、侧面虎、金钩马&#xff1b;车也是一样&#xff0c;比如有肋车、沉底车、相位车等。     按照《象棋攻防与口诀》的"边炮车砍象&#xff0c;三七马肋车"口诀&#xff0c;这里…

内存管理 : 05 内存换入-请求调页

操作系统内存换入 - 请求调页讲解 这一讲主要内容是内存的换入&#xff0c;下一讲要讲内存的换出&#xff08;swap out&#xff09;&#xff0c;这两讲合在一起就是内存的换入换出。讲完内存的换入换出&#xff0c;操作系统关于内存管理这部分内容&#xff0c;也就是我们课程里…

任务23:创建天气信息大屏Django项目

任务描述 知识点&#xff1a; Django 重 点&#xff1a; Django创建项目Django视图函数Django路由Django静态文件Django渲染模板 内 容&#xff1a; 使用PyCharm创建大屏项目渲染大屏主页 任务指导 1. 使用PyCharm创建大屏项目。 创建weather项目配置虚拟环境创建ch…

回溯算法!!

只要有递归就会有回溯&#xff0c;回溯隐藏在递归函数的下面 回溯算法是回溯搜索算法&#xff0c;是纯暴力的搜索算法 一般用于解决以下问题 组合问题&#xff1a;N个数里面按一定规则找出k个数的集合&#xff0c;组合是不强调元素顺序的&#xff0c;排列是强调元素顺序。切…

算法学习--持续更新

算法 2025年5月24日 完成&#xff1a;快速排序、快速排序基数优化、尾递归优化 快排 public class QuickSort {public void sort(int[] nums, int left, int right) {if(left>right){return;}int partiton quickSort(nums,left,right);sort(nums,left,partiton-1);sort(nu…

类和对象(4)

&#xff08;本文是《类和对象》的收尾&#xff09; 一.构造函数初始化的逻辑 1.构造函数的初始化列表使用说明 初始化列表是以冒号开头、逗号分隔成员变量的初始化方式&#xff0c;格式为&#xff1a; 构造函数() : 成员1(初始值), 成员2(表达式…

大规模真实场景 WiFi 感知基准数据集

一段话总结 本文提出CSI-Bench,首个大规模真实场景WiFi感知基准数据集,覆盖26个室内环境、35名用户、16种商用设备,包含461小时有效数据,支持跌倒检测、呼吸监测、定位、运动源识别等单任务及用户身份、活动、 proximity联合标注的多任务学习。通过标准化评估协议和基线模…

io流2——字节输入流,文件拷贝

!基本代码演示&#xff1a; 读取&#xff1a; 到程序中不是a&#xff0c;而是a的asicc码对应的数字 继续读读到最后&#xff1a; 不想看到数字&#xff0c;还想看abcde: 再继续读&#xff1a; 如果读不到了&#xff0c;就会返回-1 细节 细节一 细节2 字节输入流循环读取 …

沈白高铁开始最后测试 东北东部快速铁路通道进入联调联试

6月1日,首趟执行联调联试任务的综合巡检车从沈阳北站出发。沈白高铁开通运营后,辽宁将实现“市市通高铁”,对完善辽宁综合立体交通网络布局具有重要意义。这条高铁线路也将结束吉林省通化市、白山市不通高铁的历史,极大带动沿线旅游资源的开发。沈白高铁正线起自沈阳北站,…

山东友道化工厂爆炸前后 居民生活受冲击

山东友道化学有限公司发生爆炸事故,造成严重后果。事故发生时,距离公司1.7公里外的仁和街居民家窗户被震碎,范丽家超市的顶棚掉落,导致她头部受伤。诊所医生在当天下午处理了20多人的伤口,未收取费用。范丽的儿子从外地赶回家,将她送往医院治疗。高密仁和化工产业园内的友…

景区撒1千斤蚬子:让赶海游客有收获,吸引上万游客参与

近两日,多名网友分享了在辽宁省大连市夏家河子海滨浴场偶遇工作人员开着铲车、三轮车给游客撒蚬子赶海的场景。6月1日,景区回应称,在沙滩撒蚬子是为了让赶海的游客都能挖到东西。这两天,景区每天需要撒约1000斤的蚬子。此外,还有巴掌大的鲍鱼和海螺,如果游客捡到可以兑换…

萨巴伦卡2-0阿尼西莫娃 将战郑钦文 连胜挺进八强

在2025年法网女单1/8决赛中,头号种子萨巴伦卡以7-5和6-3的比分击败阿尼西莫娃,顺利晋级八强。这是萨巴伦卡连续第三年进入法网八强,并且她在最近参加的十个大满贯赛事中都至少闯入了八强,总计第十二次。接下来,萨巴伦卡将迎战中国选手郑钦文。这将是两人之间的第八次对决。…

关于神经网络中的激活函数

这篇博客主要介绍一下神经网络中的激活函数以及为什么要存在激活函数。 首先&#xff0c;我先做一个简单的类比&#xff1a;激活函数的作用就像给神经网络里的 “数字信号” 加了一个 “智能阀门”&#xff0c;让机器能学会像人类一样思考复杂问题。 没有激活i函数的神经网络…

开始使用 Elastic AI Assistant for Observability 和 Amazon Bedrock

作者&#xff1a;来自 Elastic Jonathan Simon 及 Udayasimha Theepireddy (Uday) 按照以下分步流程开始使用 Elastic AI Assistant for Observability 和 Amazon Bedrock。 如果你想使得下面的操作适用于 DeepSeek R1&#xff0c;那么你可以更进一步阅读文章 “使用 Ollama 和…

[平台运营] CSDN评论折叠机制对内容引流的影响与实践反思

[网页链接]在内容创作和知识分享过程中,很多技术博主会选择在 CSDN 这样的专业平台发布文章、经验总结或教程,并希望通过评论、互动的方式进一步引流到自己的其他优质内容(例如视频课程、开源项目等)。 但最近我在实操中遇到了一些有趣的现象,想在这里做个记录和分享,供有…