大数据之Maven
一、Maven的作用
作用一:下载对应的jar包
避免jar包重复下载配置,保证多个工程共用一份jar包。Maven有一个本地仓库,可以通过pom.xml文件来记录jar所在的位置。Maven会自动从远程仓库下载jar包,并且会下载所依赖的其他jar包,保证规范、完整、准确。
groupId: 域名的反写artifactId: 项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。version:jar的版本
作用二:处理jar之间的冲突
jar包之间的冲突处理:多个jar包之间的依赖关系也存在冲突的情况,比如jar包A和jar包B所依赖的子jar包虽然是同一个,但是依赖的版本不一致。Maven一般通过最短路径者优先和先声明者优先来解决这个问题。
- 最短路径指依赖树的深度,深度越低,优先级越高。
- 声明的优先与否通过pom.xml的顺序来决定,放在前面的优先级高。
作用三:项目的模块化管理
每个开发者一个模块
作用四:项目的分布式部署
单个计算机无法独立运行某个项目,将项目进行拆分,部署到多个计算机当中。利用多个计算机的存储资源和计算资源来处理某个项目,Maven框架就可以自动化的构建分布式项目。
二、Maven是什么
Maven是一款自动化构建工具,服务于项目构建和依赖管理。
1.构建是什么
- 纯java代码:java代码编译得到.class文件
- web工程:java代码部署到服务器
- 实际项目:java代码、框架配置文件、国际化等其他资源文件,按照正确的目录结构部署到服务器中。(构建)
2.构建的环节
- 清理:删除以前的编译结果,为重新编译做好准备
- 编译:java -> class文件
- 测试:测试关键环节,确保项目没有关键性问题
- 报告:展示测试结果

- 打包:将一堆文件打包为一个压缩文件,用于部署到其他服务器
- 安装:在Maven环境下将打包的结果(jar包或war包)安装到本地仓库
- 部署:将打包的结果部署到远程仓库或将war包部署到服务器
3. 自动化构建
将编译、打包、部署、测试这些步骤交给Maven来做,这个就是自动化构建。
三、使用Maven
- 配置maven环境变量
- 修改maven远程仓库的网址,改为国内的镜像网址
- 打开apache-maven/conf/settings.xml文件
- 创建Maven本地仓库,文件名建议为maven_rep
- 修改本地仓库的地址为你创建的仓库路径
<localReposity> - 修改阿里云镜像地址
<mirror> - 修改Maven编译版本,建议使用java 8
<profile>
- 在IDEA中修改maven配置 setting/build/build tools/maven
- 修改maven路径,使用自己的maven,替换idea自带的
- 修改maven配置文件settingxml路径
- 创建maven工程,不要选择空项目,使用new project
- build system: 选择maven
- groupId: 公司域名倒写
- artifactId:项目名
- 目录结构
- src/main: 主程序
- src/main/java: 源代码
- resources目录用于存放配置文件和资源文件
- test目录用于存放测试程序。
- external libraries: 已经下载的jar包
- 使用maven的lifecycle按钮来构建项目

- 添加一个打包插件,让打包后的jar包,包含我们运行代码时所用的依赖。这个配置看情况添加,如果不需要可以注释掉。
在pom.xml中加入如下内容:
<build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins>
</build>
四、核心概念
- POM:项目对象模型,将java工程的相关信息封装成对象作为便于操作和管理的模型。对应的就pom.xml文件,学习Maven就是学习pom.xml文件中的配置。
- 约定的目录结构: 约定 > 配置 > 编码, 而Maven就是约定好了特定的目录结构,注意不要轻易删除原有的目录结构。
- 坐标:(groupId, artifactId, version)-> (公司,项目模块名,模块版本),用来定位当前模块在本地仓库的位置。将gav三个向量连起来就是模块在本地仓库中的位置。注意每个点分割为一个文件夹。我们自己的maven工程必须执行install命令才会进入本地仓库。
1. 依赖管理
当前工程会到本地仓库根据坐标寻找所依赖的jar包。
- 直接依赖:Hello 依赖 junit , HelloFriend 依赖 Hello
- 间接依赖:HelloFriend 间接依赖 junit
依赖的范围
provided: main,test目录下的代码都可以访问, 运行时无法访问compile: main, test,运行时都可以访问test: 只有test目录下可以访问
统一管理包的版本
Maven可以通过给包的版本号设置一个变量的形式来动态设置包的版本,便于包的升级换代。使用${变量名}的形式来统一修改。
2. 仓库
分类
- 本地仓库:为当前本机电脑上的所有Maven工程服务
- 远程仓库
- 私服:个人搭建的
- 中央仓库:连接比较慢
- 中央仓库的镜像: 架设在各个大洲,为中央仓库分担流量
仓库中的文件
- Maven的插件
- 我们自己开发的项目的模块
- 第三方框架或工具的jar包
3.生命周期
生命周期定义各个构建环节的执行顺序,Maven靠这个自动化的执行构建命令。
- clean生命周期:清理
- site生命周期:生成站点文档
- default生命周期:
compile -> test compile -> test ->package -> install- 运行某个阶段时,会将之前的各个阶段都执行一遍
插件
- Maven核心只是定义了抽象的生命周期,具体实现是插件实现的
- 每个插件可以实现多个功能
五、继承
由于非compile范文的依赖信息是无法在外部工程中传递的。我们可以在父工程中引入相应的依赖,比如junit。子工程中的模块会自动继承父工程的依赖关系,我们可以在父工程中管理子工程的依赖。
可以在父工程里面的版本进行修改,子工程会自动跟随父工程变化。同时也可以在父工程中修改依赖的范围(provided, compile, test),子工程也会随着变化。
注意:因此在子工程中的依赖不添加版本号信息,子工程跟随父工程变化即可。
六、聚合
可以在父工程中使用modules关键字聚合子工程,聚合后,可以在父工程中对所有子工程进行清理、编译、测试、打包等操作。
七、Maven酷站
权威网址:http://mvnrepository.com/
搜索需要的Jar包依赖信息:http://search.maven.org
八、常见问题及解决办法
问题一:如果下载过程中由于网速问题导致下载失败,会生成一个xxxx.lastupdated的文件,需要删除该文件后再重新刷新。
问题二:not found class找不到类 / not found method
jar包冲突问题,手动使用exclusion关键字排除产生冲突的包。
相关文章:
大数据之Maven
一、Maven的作用 作用一:下载对应的jar包 避免jar包重复下载配置,保证多个工程共用一份jar包。Maven有一个本地仓库,可以通过pom.xml文件来记录jar所在的位置。Maven会自动从远程仓库下载jar包,并且会下载所依赖的其他jar包&…...
自制centos7.9的wsl发行版
自制centos7.9的wsl发行版 参考:https://zhuanlan.zhihu.com/p/482538727 Windows10提供了一个wsl工具用于直接在windows上运行Linux子系统。 CentOS国内镜像下载:https://mirrors.aliyun.com/centos/ 这里选择了7.9.2009版本:https://mirr…...
使用VisualStudio制作上位机(五)
文章目录 使用VisualStudio制作上位机(五)第四部分:GUI界面数据显示使用VisualStudio制作上位机(五) Author:YAL 第四部分:GUI界面数据显示 这一部分,主要实现GUI的界面显示。 上一文已经实现了CAN数据的接收,并将数据更新到数组里。所以在做界面的显示时,只需要在…...
ChatGPT在医疗领域可应用于改善与患者的沟通
注意:本信息仅供参考,发布该内容旨在传递更多信息的目的,并不意味着赞同其观点或证实其说法。 自从ChatGPT在2022年末对公众开放以来,OpenAI的这款生成式AI聊天机器人在医疗领域展示出了巨大潜力。它已经通过了美国医学执照考试&a…...
直播预告|博睿学院第四季即将开讲:博睿数据资深运维团队现身说法!
博睿学院第四季开讲啦!本季博睿学院的课程将于本周四(8月31日)16点正式启动。本季我们邀请到了博睿数据平台支撑中心的四位资深运维专家现身说法,来为我们分享一体化智能可观测平台Bonree ONE的实践干货。 他们,见多识…...
端到端自动驾驶综述
End-to-end Autonomous Driving: Challenges and Frontiers 文章脉路 Introduction 从经典的模块化的方法到端到端方法的一个对比, 讲了各自的优缺点, 模块化的好处是各个模块都有自己明确的优化的目标, 可解释性较强, 且容易debug, 缺点是各个模块优化的目标并不是最终的驾…...
mysql索引、事务、存储引擎
一、索引 索引的概念: 索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)。使用索引后可以不用扫描全表来定位某行的数据,而是…...
【CMU15445】Fall 2019, Project 2: Hash Table 实验记录
目录 实验准备实验测试 实验准备 官方说明:https://15445.courses.cs.cmu.edu/fall2019/project2/ 实验测试 Task 1: mkdir build cd build make hash_table_page_test ./test/hash_table_page_testTask 2: make hash_table_test ./test…...
PMP证书是不是烂大街了?
大家都知道,PMP证书是项目管理领域的金字招牌。近年来,随着项目管理的重要性日益凸显,越来越多的人开始关注和学习PMP证书。无论是企业招聘还是个人职业发展,PMP证书都成为了一张炙手可热的敲门砖。 那么,PMP证书到底…...
Mac下Docker Desktop安装命令行工具、开启本地远程访问
Mac系统下,为了方便在terminal和idea里使用docker,需要安装docker命令行工具,和开启Docker Desktop本地远程访问。 具体方法是在设置-高级下, 1.将勾选的User调整为System,这样不用手动配置PATH即可使用docker命令 …...
Java实现根据商品ID获取京东商品详情数据,1688商品详情接口,1688API接口封装方法
要通过京东的API获取商品详情数据,您可以使用京东开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例,展示如何通过京东开放平台API获取商品详情: 首先,确保您已注册成为京东开放平台的开发者,并创建一…...
element-plus指定el-date-picker的弹出框位置
此处记录一下,通过popper-options指定popper出现的位置...
游戏陪玩语音聊天系统3.0商业升级独立版本源码
首发价值29800元的最新商业版游戏陪玩语音聊天系统3.0商业升级独立版本源码 1、增加人气店员轮播 2、优化ui界面丨优化游戏图标展示丨优化分类展示 3、增加动态礼物打赏功能 4、增加礼物墙功能 增加店员满足业绩,才能升级功能 5、增加店员等级不同,…...
TCP/IP网络江湖武艺传承:物理层与通信江湖的幕后(物理层中篇:物理层与现代通信技术)
目录 〇、引言:进入现代通信技术的江湖 一、数字信号与模拟信号:传承与差异...
Nuxt 菜鸟入门学习笔记三:视图
文章目录 入口文件组件 Components页面 Pages布局 Layouts Nuxt 官网地址: https://nuxt.com/ Nuxt 提供多个组件层来实现应用程序的用户界面。 入口文件 App.vue组件 Components页面 Pages布局 Layouts 下面逐一进行介绍。 入口文件 默认情况下,Nu…...
Python Opencv实践 - 霍夫线检测(Hough Lines)
import cv2 as cv import numpy as np import matplotlib.pyplot as plt import randomimg cv.imread("../SampleImages/GreenBoard.jpg") print(img.shape) plt.imshow(img[:,:,::-1])#将图像转为二值图 gray cv.cvtColor(img, cv.COLOR_BGR2GRAY) plt.imshow(gra…...
Weblogic漏洞(四)之 CVE-2018-2894 任意文件上传漏洞
CVE-2018-2894 任意文件上传漏洞 漏洞影响 Weblogic受影响的版本: 10.3.6.012.1.3.012.2.1.212.2.1.3 漏洞环境 此次我们使用的是vnlhub靶场搭建的环境,是vnlhub中的Weblogic漏洞中的CVE-2018-2894靶场,我们 cd 到 CVE-2018-2894&#x…...
C++:string的[ ],at,push_back
1.[ ]运算符和at函数 返回的是string的当前字符串的合法的索引位置的引用,所谓的合法是指小于size的索引 #include <string> #include <iostream>using namespace std;int main() {string str = "hello";cout<<"str:"<<str<…...
C语言(第三十六天)
4. 位操作符:&、|、^ 位操作符有: & //按位与 | //按位或 ^ //按位异或 注:他们的操作数必须是整数。 直接上代码: #include <stdio.h> int main() { int num1 -3; int num2 5; num1 & num2; num1 | num2; nu…...
005_C++数学库常用函数
数学库常用函数 函数 我们其实已经掌握了一些函数,比如主函数main()。还有其他的函数比如一些库中的函数,例:<stdio.h>头文件对应标准输入输出库中的printf()和scanf()、<stdlib.h>标准库头文件对应的标准库中的srand()和rand(),除此之外在C++中常用的还有数…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
