Maven学习笔记
目录
- 1 概述
- 1.1 Maven是什么
- 1.2 作用
- 1.2.1 构建
- 1.3 jar包是什么
- 2 下载及配置
- 2.1 下载
- 2.2 配置环境变量
- 3 基本概念
- 3.1 仓库
- 3.2 坐标
- 3.2.1 概念
- 3.2.2 如何获取指定jar包的坐标
- 3.3 项目结构
- 3.3.1 普通java项目的目录结构
- 3.3.2 java web项目的目录结构
- 3.4 项目构建命令
- 4 IDEA中创建Maven项目
- 4.1 点击new project,选择Maven选项
- 4.2 输入项目名称,完成项目的创建
- 4.3 进行maven的配置
- 4.4 修改pom.xml配置文件
- 4.5 执行maven指令
- 4.5.1 方式1:双击命令
- 4.5.2 方式2:进行配置
- 4 IDEA中使用Maven模板新建项目
- 4.1 创建java web项目
- 4.2 安装tomcat插件
- 5 依赖管理
- 5.1 依赖配置
- 5.2 依赖传递
- 5.3 可选依赖
- 5.4 排除依赖
- 5.5 依赖范围
- 6 生命周期和插件
- 6.1 项目构建生命周期
- 6.2 插件
- 7 分模块开发
- 8 聚合
- 9 继承
- 9.1 在父工程中定义依赖管理
- 9.2 子工程中使用父工程中的依赖
- 9.3 插件管理与依赖管理同理
- 9.4 继承与聚合的联系
- 10 属性
- 10.1 属性的类别
- 10.2 自定义属性
- 10.2.1 作用
- 10.2.2 定义格式
- 10.2.3 引用格式
- 10.3 内置属性
- 10.4 Setting属性
- 10.5 Java系统属性
- 10.6 环境变量属性
- 11 版本管理
- 12 资源配置
- 12.1 自定义属性
- 12.2 在配置文件中引用属性
- 12.3 开启配置文件加载pom属性
- 13 多环境配置
- 13.1 加载指定环境
- 14 跳过测试
- 14.1 应用场景
- 14.2 方式1:使用命令跳过测试
- 14.3 方式2:使用界面操作跳过测试
- 14.4 方式3:使用配置跳过测试
参考文章
1 概述
1.1 Maven是什么
Maven 是 Apache 维护的一款专门为 Java 项目提供构建和依赖管理支持的工具。它包含了一个对象模型,一组标准集合,一个依赖管理系统和用来运行定义在生命周期阶段中插件目标和逻辑。
1.2 作用
- 依赖管理:Maven的核心功能是合理叙述项目间的依赖关系,通俗点就是通过pom.xml文件的配置获取jar包而不需要手动地去添加jar包。
- 构建:脱离 IDE 环境执行构建操作。
1.2.1 构建
Java 项目开发过程中,构建指的是使用『原材料生产产品』的过程。
构建过程包含的主要的环节:
- 清理:删除上一次构建的结果,为下一次构建做好准备
- 编译:Java 源程序编译成 *.class 字节码文件
- 测试:运行提前准备好的测试程序
- 报告:针对刚才测试的结果生成一个全面的信息
- 打包
- Java工程:jar包
- Web工程:war包
- 安装:把一个 Maven 工程经过打包操作生成的 jar 包或 war 包存入 Maven 仓库
- 部署
- 部署 jar 包:把一个 jar 包部署到 Nexus 私服服务器上
- 部署 war 包:借助相关 Maven 插件(例如 cargo),将 war 包部署到 Tomcat 服务器上
1.3 jar包是什么
JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便开发Java平台应用软件或库。
通俗来说,jar包就是别人已经写好的类,然后对这些类进行打包(压缩)。可以将这些jar包引入到你的项目中,然后可以直接使用这些jar包中的类、方法和属性,这些jar包一般放在lib目录下。
2 下载及配置
2.1 下载
设置镜像仓库和本地仓库的位置:参考
2.2 配置环境变量
参考
3 基本概念
3.1 仓库


3.2 坐标
3.2.1 概念

3.2.2 如何获取指定jar包的坐标
- 进入网站;
- 在顶部搜索框中输入想要查找的jar包;

- 在查找结果页面中找到对应的选项;

- 选择你需要的版本;

- 复制jar包的坐标到你的项目中。

3.3 项目结构
3.3.1 普通java项目的目录结构

还有最重要的pom.xml,与src位于同一级上。
3.3.2 java web项目的目录结构

3.4 项目构建命令

4 IDEA中创建Maven项目
4.1 点击new project,选择Maven选项

4.2 输入项目名称,完成项目的创建

4.3 进行maven的配置
注意: maven的版本号不能太高,否则idea中不支持;

4.4 修改pom.xml配置文件

4.5 执行maven指令
4.5.1 方式1:双击命令

4.5.2 方式2:进行配置
这种方式的优势在于可以对代码进行调试。




4 IDEA中使用Maven模板新建项目
4.1 创建java web项目

创建完成后的目录结构不够完善,需要我们自己去添加


对于不同的文件夹应该进行对应的标记,右击文件夹,选择Mark Directory as来进行设置。

4.2 安装tomcat插件
在pom.xml文件中添加插件,在右侧maven框中点击刷新引入插件。
<build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version></plugin></plugins></build>

5 依赖管理
5.1 依赖配置

在一个项目中可以引入另一个项目的所有依赖,具体配置方式如下:

5.2 依赖传递


5.3 可选依赖
当前项目中的私有依赖,其他项目不能通过本项目引用。
<dependency><groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> // 只需要将Optional设置为true即可<optional>true</optional>
</dependency>
5.4 排除依赖

5.5 依赖范围

6 生命周期和插件
6.1 项目构建生命周期
Maven的构建生命周期描述的是一次构建过程中经历了多少个事件。


6.2 插件
生命周期可以理解为年龄,而插件是对应年龄应该做的事。



7 分模块开发
略
8 聚合


如果工程没有写打包方式,默认打jar包。
9 继承
maven中的继承本质上是版本号的继承,在子工程中仍需要定义依赖的groupId和atrifactId,只有定义过的依赖,在子工程中才可以使用.
9.1 在父工程中定义依赖管理

9.2 子工程中使用父工程中的依赖
- 子工程的groupId和version可以去掉,与父工程保持一致.

- 子工程中定义父工程中存在的依赖时,无需声明依赖版本.

9.3 插件管理与依赖管理同理
把父工程中的插件放到pluginManagement标签中,子工程中就不需要定义版本号.

9.4 继承与聚合的联系

10 属性
10.1 属性的类别
- 自定义属性
- 内置属性
- Setting属性
- Java系统属性
- 环境变量属性
10.2 自定义属性
10.2.1 作用
等同于定义变量,方便统一维护。
10.2.2 定义格式

10.2.3 引用格式

10.3 内置属性

10.4 Setting属性

10.5 Java系统属性

10.6 环境变量属性

11 版本管理

12 资源配置
为了更好的管理配置文件中的资源(例如jdbc.properties),将配置文件中资源可以配置到pom.xml中的自定义属性中,从而实现统一管理。
12.1 自定义属性

12.2 在配置文件中引用属性

12.3 开启配置文件加载pom属性
在build标签下配置resources标签,配置资源文件所在的文件夹,并且开启过滤。
只有开启了这一步,才能通过${}实现对自定义属性的访问。

13 多环境配置
在pom.xml中使用profiles标签创建多环境配置

13.1 加载指定环境
命令格式:指令 –P 环境定义id

14 跳过测试
14.1 应用场景

14.2 方式1:使用命令跳过测试

14.3 方式2:使用界面操作跳过测试

14.4 方式3:使用配置跳过测试

相关文章:
Maven学习笔记
目录1 概述1.1 Maven是什么1.2 作用1.2.1 构建1.3 jar包是什么2 下载及配置2.1 下载2.2 配置环境变量3 基本概念3.1 仓库3.2 坐标3.2.1 概念3.2.2 如何获取指定jar包的坐标3.3 项目结构3.3.1 普通java项目的目录结构3.3.2 java web项目的目录结构3.4 项目构建命令4 IDEA中创建M…...
654. 最大二叉树
题目 leetcode题目地址 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。 返…...
快速幂----快速求解底数的n次幂
目录 一.快速幂 1.问题的引入 2.快速幂的介绍 3.核心思想 4.代码实现 2.猴子碰撞的方法数 1.题目描述 2.问题分析 3.代码实现 一.快速幂 1.问题的引入 问题:求解num的n次幂,结果需要求余7 对于这个问题我们可能就是直接调用函数pow(a,b)来直接求解a的b次幂问题,但是如果…...
【FMCW 04】测角-Angle FFT
在之前的文章中,我们已经详尽讨论过FMCW雷达测距和测速的原理,现在来讲最后一块内容,测角。测角对于硬件设备具有要求,即要求雷达具有多发多收结构,从而形成多个空间信道(channel),我…...
Linux操作系统学习(线程同步)
文章目录线程同步条件变量生产者与消费者模型信号量环形队列应用生产者消费者模型线程同步 现实生活中我们经常会遇到同一个资源多个人都想使用的问题,例如游乐园过山车排队,玩完的游客还想再玩,最好的办法就是玩完的游客想再玩就去重新排…...
了解动态规划算法:原理、实现和优化指南
动态规划 详细介绍例子斐波那契数列最长回文子串优化指南优化思路斐波那契数列优化最长回文子串优化详细介绍 动态规划(Dynamic Programming,简称 DP)是一种通过将原问题拆分成子问题并分别求解这些子问题来解决复杂问题的算法思想。 它通常用于求解优化问题,它的核心思想…...
《NFL橄榄球》:明尼苏达维京人·橄榄1号位
明尼苏达维京人(英语:Minnesota Vikings)是一支职业美式足球球队,位于明尼苏达州的明尼阿波利斯。他们现时在国家橄榄球联合会北区参与国家美式足球联盟比赛。该球队本为美国美式足球联盟(AFL)的球队。但是…...
sheng的学习笔记-Actuator健康监控
前言在微服务系统里,对微服务程序的运行状况的跟踪和监控是必不可少的;例如GPE,TelegrafinfluxDB都提供了微服务体系监控的方案, ZIPKIN, Skywalking都提供了微服务云体系的APM的方案; 这些解决方案功能全面…...
初次使用ESP32-CAM记录
模块的配置和图片 摄像头:8225N V2.0 171026 模块esp-32s 参考资料:https://docs.ai-thinker.com/esp32 配置环境 参考:https://blog.csdn.net/weixin_43794311/article/details/128622558 简单使用需要注意的地方 基本的环境配置和串口…...
华为OD机试真题Python实现【最长连续交替方波信号】真题+解题思路+代码(20222023)
最长连续交替方波信号 题目 输入一串方波信号,求取最长的完全连续交替方波信号,并将其输出, 如果有相同长度的交替方波信号,输出任一即可,方波信号高位用1标识,低位用0标识 如图: 说明: 一个完整的信号一定以0开始然后以0结尾, 即 010 是一个完整的信号,但101,101…...
【操作系统原理实验】页面替换策略模拟实现
选择一种高级语言如C/C等,编写一个页面替换算法的模拟实现程序。1) 设计内存管理相关数据结构;2) 随机生成一个页面请求序列;3) 设置内存管理模拟的关键参数;4) 实现该页面置换算法;5) 模拟实现给定配置请求序列的换页…...
Java中解析XML文件
1 在Java中解析XML文件共有四种方式 A、DOM方式解析XML数据 树结构,有助于更好地理解、掌握,代码易于编写,在解析过程中树结构是保存在内存中,方便修改 B、SAX方式解析 采用事件驱动模式,对内存消耗比较小࿰…...
二点回调测买 源码
如图所示,两点回调测买点的效果图,这是我们常见的一种预测买点计算方法。 现将源码公布如下: DRAWKLINE(H,O,L,C); N:13; A1:REF(HIGH,N)HHV(HIGH,2*N1); B1:FILTER(A1,N); C1:BACKSET(B1,N1); D1:FILTER(C1,N); A2:REF(LOW,N)LLV(LOW,2*N1…...
钉钉端H5开发调试怎么搞
H5开发本地调试教程 作为一名前端开发,大家平时工作中或多或少都有接触或需要开发H5页面的场景,在开发过程中,如何像PC端页面一样有有丝滑的体验呢? 不同的情况需要在不同的端调试更方便有效: 1. 在画UI的时候,更适合在PC端调试,更改代码或者直接在浏览器调试,都是实…...
Mysql Server原理简介
Mysql客户端包括JDBC、 Navicat、sqlyog,只是为了和mysql server建立连接,向mysql server提交sql语句。mysql server组件第一部分叫连接器主要承担的功能叫管理连接和验证权限,每次在进行数据库访问的时候,必然要输入用户名和密码…...
23种设计模式-外观模式
外观模式是一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,使得客户端可以更加方便地访问子系统的功能。在这篇博客中,我们将讨论如何使用Java实现外观模式,并通…...
使用 Vulkan VkImage 作为 CUDA cuArray
使用 Vulkan VkImage 作为 CUDA cuArray【问题标题】:Use Vulkan VkImage as a CUDA cuArray使用 Vulkan VkImage 作为 CUDA cuArray【发布时间】:2019-08-20 20:01:10【问题描述】:将 Vulkan VkImage 用作 CUDA cuArray 的正确方法是什么&am…...
电商API接口-电商OMS不可或缺的一块 调用代码展示
电商后台管理系统关键的一环就是实现电商平台数据的抓取,以及上下架商品、订单修改等功能的调用。这里就需要调用电商API接口。接入电商API接口后再根据自我的需求进行功能再开发,实现业务上的数字化管理。其中订单管理模板上需要用到如下API:seller_ord…...
Solaris ZFS文件系统rpool扩容
ZFS文件系统简介 Solaris10默认的文件系统是ufs(Unix Filesystem),当然也可以选装zfs;Solaris11默认的文件系统是zfs(Zettabyte Filesystem)。 ZFS文件系统的英文名称为Zettabyte File System,也叫动态文件…...
模式识别 —— 第二章 参数估计
模式识别 —— 第二章 参数估计 文章目录模式识别 —— 第二章 参数估计最大似然估计(MLE)最大后验概率估计(MAP)贝叶斯估计最大似然估计(MLE) 在语言上: 似然(likelihood…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

