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…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

