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…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...
Java中栈的多种实现类详解
Java中栈的多种实现类详解:Stack、LinkedList与ArrayDeque全方位对比 前言一、Stack类——Java最早的栈实现1.1 Stack类简介1.2 常用方法1.3 优缺点分析 二、LinkedList类——灵活的双端链表2.1 LinkedList类简介2.2 常用方法2.3 优缺点分析 三、ArrayDeque类——高…...