基于IDEA 进行Maven依赖管理
1. 依赖管理概念
Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题,使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中,避免出现版本冲突和依赖缺失等问题。
我们通过定义 POM 文件,Maven 能够自动解析项目的依赖关系,并通过 Maven 仓库自动下载和管理依赖,从而避免了手动下载和管理依赖的繁琐工作和可能引发的版本冲突问题。
总之,Maven 的依赖管理是 Maven 软件的一个核心功能之一,使得软件包依赖的管理和使用更加智能和方便,简化了开发过程中的工作,并提高了软件质量和可维护性。
2. Maven工程核心信息配置和解读(GAVP)
位置:pom.xml
<!-- 模型版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
<groupId>com.companyname.project-group</groupId>
<!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>project</artifactId>
<!-- 版本号 -->
<version>1.0.0</version><!--打包方式默认:jarjar指的是普通的java项目打包方式! 项目打成jar包!war指的是web项目打包方式!项目打成war包!pom不会讲项目打包!这个项目作为父工程,被其他工程聚合或者继承!后面会讲解两个概念
-->
<packaging>jar/pom/war</packaging>
3. Maven工程依赖管理配置
位置:pom.xml
依赖管理和依赖添加
<!-- 通过编写依赖jar包的gav必要属性,引入第三方依赖!scope属性是可选的,可以指定依赖生效范围!依赖信息查询方式:1. maven仓库信息官网 https://mvnrepository.com/2. mavensearch插件搜索-->
<dependencies><!-- 引入具体的依赖包 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version><!-- 依赖范围 --><scope>runtime</scope></dependency></dependencies>
依赖版本统一提取和维护
<!--声明版本-->
<properties><!--命名随便,内部制定版本号即可!--><junit.version>4.12</junit.version><!-- 也可以通过 maven规定的固定的key,配置maven的参数!如下配置编码格式!--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><!--引用properties声明版本 --><version>${junit.version}</version></dependency>
</dependencies>
4. 依赖范围
通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境
依赖范围 | 描述 |
---|---|
compile | 编译依赖范围,scope 元素的缺省值。使用此依赖范围的 Maven 依赖,对于三种 classpath 均有效,即该 Maven 依赖在上述三种 classpath 均会被引入。例如,log4j 在编译、测试、运行过程都是必须的。 |
test | 测试依赖范围。使用此依赖范围的 Maven 依赖,只对测试 classpath 有效。例如,Junit 依赖只有在测试阶段才需要。 |
provided | 已提供依赖范围。使用此依赖范围的 Maven 依赖,只对编译 classpath 和测试 classpath 有效。例如,servlet-api 依赖对于编译、测试阶段而言是需要的,但是运行阶段,由于外部容器已经提供,故不需要 Maven 重复引入该依赖。 |
runtime | 运行时依赖范围。使用此依赖范围的 Maven 依赖,只对测试 classpath、运行 classpath 有效。例如,JDBC 驱动实现依赖,其在编译时只需 JDK 提供的 JDBC 接口即可,只有测试、运行阶段才需要实现了 JDBC 接口的驱动。 |
system | 系统依赖范围,其效果与 provided 的依赖范围一致。其用于添加非 Maven 仓库的本地依赖,通过依赖元素 dependency 中的 systemPath 元素指定本地依赖的路径。鉴于使用其会导致项目的可移植性降低,一般不推荐使用。 |
import | 导入依赖范围,该依赖范围只能与 dependencyManagement 元素配合使用,其功能是将目标 pom.xml 文件中 dependencyManagement 的配置导入合并到当前 pom.xml 的 dependencyManagement 中。 |
5. Maven工程依赖下载失败错误解决(重点)
在使用 Maven 构建项目时,可能会发生依赖项下载错误的情况,主要原因有以下几种:
- 下载依赖时出现网络故障或仓库服务器宕机等原因,导致无法连接至 Maven 仓库,从而无法下载依赖。
- 依赖项的版本号或配置文件中的版本号错误,或者依赖项没有正确定义,导致 Maven 下载的依赖项与实际需要的不一致,从而引发错误。
- 本地 Maven 仓库或缓存被污染或损坏,导致 Maven 无法正确地使用现有的依赖项。
解决方案:
-
检查网络连接和 Maven 仓库服务器状态。
-
确保依赖项的版本号与项目对应的版本号匹配,并检查 POM 文件中的依赖项是否正确。
-
清除本地 Maven 仓库缓存(lastUpdated 文件),因为只要存在lastupdated缓存文件,刷新也不会重新下载。本地仓库中,根据依赖的gav属性依次向下查找文件夹,最终删除内部的文件,刷新重新下载即可!
例如: pom.xml依赖
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version> </dependency>
文件:
-
或者可以将清除lastUpdated文件的操作写在一个脚本文件中,手动创建文件"clearLastUpdated.bat",名字任意,但是后缀必须是bat,将以下内容复制到文件中
cls @ECHO OFF SET CLEAR_PATH=D: SET CLEAR_DIR=D:\maven-repository(本地仓库路径) color 0a TITLE ClearLastUpdated For Windows GOTO MENU :MENU CLS ECHO. ECHO. * * * * ClearLastUpdated For Windows * * * * ECHO. * * ECHO. * 1 清理*.lastUpdated * ECHO. * * ECHO. * 2 查看*.lastUpdated * ECHO. * * ECHO. * 3 退 出 * ECHO. * * ECHO. * * * * * * * * * * * * * * * * * * * * * * * * ECHO. ECHO.请输入选择项目的序号: set /p ID= IF "%id%"=="1" GOTO cmd1 IF "%id%"=="2" GOTO cmd2 IF "%id%"=="3" EXIT PAUSE :cmd1 ECHO. 开始清理 %CLEAR_PATH% cd %CLEAR_DIR% for /r %%i in (*.lastUpdated) do del %%i ECHO.OK PAUSE GOTO MENU :cmd2 ECHO. 查看*.lastUpdated文件 %CLEAR_PATH% cd %CLEAR_DIR% for /r %%i in (*.lastUpdated) do echo %%i ECHO.OK PAUSE GOTO MENU
6. Maven工程Build构建配置
项目构建是指将源代码、依赖库和资源文件等转换成可执行或可部署的应用程序的过程,在这个过程中包括编译源代码、链接依赖库、打包和部署等多个步骤。
默认情况下,构建不需要额外配置,都有对应的缺省配置。当然了,我们也可以在pom.xml定制一些配置,来修改默认构建的行为和产物!
例如:
- 指定构建打包文件的名称,非默认名称
- 制定构建打包时,指定包含文件格式和排除文件
- 打包插件版本过低,配置更高版本插件
构建配置是在pom.xml / build标签中指定!
指定打包命名
<!-- 默认的打包名称:artifactid+verson.打包方式 -->
<build><finalName>定义打包名称</finalName>
</build>
指定打包文件
如果在java文件夹中添加java类,会自动打包编译到classes文件夹下!
但是在java文件夹中添加xml文件,默认不会被打包!
默认情况下,按照maven工程结构放置的文件会默认被编译和打包!
除此之外、我们可以使用resources标签,指定要打包资源的文件夹要把哪些静态资源打包到 classes根目录下!
应用场景:mybatis中有时会将用于编写SQL语句的映射文件和mapper接口都写在src/main/java下的某个包中,此时映射文件就不会被打包,如何解决
<build><!--设置要打包的资源位置--><resources><resource><!--设置资源所在目录--><directory>src/main/java</directory><includes><!--设置包含的资源类型--><include>**/*.xml</include></includes></resource></resources>
</build>
配置依赖插件
dependencies标签下引入开发需要的jar包!我们可以在build/plugins/plugin标签引入插件!
常用的插件:修改jdk版本、tomcat插件、mybatis分页插件、mybatis逆向工程插件等等!
<build><plugins><!-- java编译插件,配jdk的编译版本 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><!-- tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8090</port><path>/</path><uriEncoding>UTF-8</uriEncoding><server>tomcat7</server></configuration></plugin></plugins>
</build>
相关文章:

基于IDEA 进行Maven依赖管理
1. 依赖管理概念 Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题,使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中,避免出现版本冲突和依赖缺失等…...

瑞萨RZ/G2L平台 初起动(SD卡启动)
文章目录 一 准备条件1 工具2 硬件3 镜像 二 烧录SD卡启动盘三 写Bootloader1 烧录文件2 启动烧录3 烧录 四 启动设置 一 准备条件 1 工具 ** BalenaEtcher(俗称“ Etcher”),是一款快速将系统镜像文件( .iso 或 .img 或 .zip或…...
chkconfig及服务脚本
运行级别 linux启动之后处于某个状态 linux运行级别 0:关机 #设置即重启 1:单用户,为root权限,禁止远程登录 2:无网络文本模式 3:多用户文本模式 4:未使用 5:图形化…...
[Android] libcutils - native 获取/设置 property
前言: Android 的property系统类似于linux的环境变量,但是更加精细。可以通过adb 设置和读取 property,同时也可以在代码 (JAVA/C/C) 中设置和获取属性。这有助于我们在运行时控制代码执行逻辑。比如打开 测试开关 或者 dump源数据文件。 工…...
Matlab 方位角计算之二
文章目录 一、简介二、实现代码三、实现效果一、简介 我们总是说降维打击,这种思路尤其在一些问题上显现的尤为突出,就比如方位角这个问题,如果我们局限于二维这个空间,那么很多时候就需要判断方向向量落在了那个象限,之后再一个个情况逐一分析,虽然这样做并不复杂,但总…...

Postman工具简介
介绍 Postman是一个商业的接口测试工具。免费的版本也可以使用不少功能。 官网:https://www.postman.com/ 下载、安装、应用界面 下载 安装、安装成功以后的应用界面 双击下载下来的可执行文件进行安装,出现如下界面: 可以注册一个账…...

2023.11.17 -hivesql调优,数据压缩,数据存储
目录 1.hive命令和参数配置 2.hive数据压缩 3.hive数据存储 0.原文件大小 18.1MB 1.textfile行存储格式, 压缩后size:18MB 2.行存储格式:squencefile ,压缩后大小8.89MB 3. 列存储格式 orc - ZILIB ,压缩后大小2.78MB 4.列存储格式 orc-snappy ,压缩后大小3.75MB 5…...

基于Vue+SpringBoot的大学计算机课程管理平台 开源项目
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 实验课程档案模块2.2 实验资源模块2.3 学生实验模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 实验课程档案表3.2.2 实验资源表3.2.3 学生实验表 四、系统展示五、核心代码5.1 一键生成实验5.2 提交实验5.3 批阅实…...

2.c++基础语法
文章目录 1.c 程序结构关键字标识符、操作符、标点预处理指令注释main 主函数命名空间 2.c 变量和常量变量 3.c 数组和容器4.c 程序流程5.c字符和字符串 1.c 程序结构 关键字 关键字事程序保留的,程序员不能使用,c的常见关键字如下图: 标识…...
applicationContext.getBean 为null
场景: 使用SpringUtils 添加了统一类的调用。单元测试是正常的。 SpringUtils public class SpringUtils implements ApplicationContextAware {private static ApplicationContext applicationContext;Overridepublic void setApplicationContext(Nonnull Applica…...
无线WiFi安全渗透与攻防(六)之WEP破解-Gerix-wifi-cracker自动化破解WEP加密
WEP破解-Gerix-wifi-cracker自动化破解WEP加密 WEP破解-Gerix-wifi-cracker自动化破解WEP加密1.环境准备1.软件和kali2.下载软件,下载地址3.将软件复制到kali,解压4.进入软件目录2.破解步骤1.启动gerix-wifi-cracker-2-master软件2.设置无线网卡位Monitor Mode模式3.重新扫描…...
华为OD机试 - 环中最长子串(Java JS Python C)
题目描述 给你一个字符串 s,首尾相连成一个环形,请你在环中找出 o 字符出现了偶数次最长子字符串的长度。 输入描述 输入是一个小写字母组成的字符串 输出描述 输出是一个整数 备注 1 ≤ s.length ≤ 500000s 只包含小写英文字母用例 输入alolobo输出6说明最长子字符串之一…...
bug-跨域访问问题
问题场景 自定义 header,导致跨域问题 一个大屏项目,设置请求接口获取数据时,有的接口能够正常返回数据,有的接口提示跨域(接口域名不同),后端也进行支持跨域设置,结果还是提示跨域…...

Babyk勒索病毒数据集恢复,计算机服务器中了babyk勒索病毒怎么办?
计算机网络技术的不断应用,为企业的生产运营提供了极大便利,网络技术的不断发展也带来了许多网络安全隐患,近期,云天数据恢复中心陆续接到许多企业的求助,企业的计算机服务器遭到了babyk勒索病毒的攻击,导致…...

(.htaccess文件特性)[MRCTF2020]你传你呢 1
题目环境: 不难看出是一道文件上传漏洞 上传一句话木马文件burpsuite进行抓包<?php eval($_POST[shell]);?> 命名为PHP文件格式 Repeater进行重放 尝试了其它后缀进行绕过都没有成功 通过 application/x-php内容类型,可以看出被识别出是PHP文件&…...

微软Ignite 2023大盘点:GPT-4 Turbo、DALL-E 3等
11月16日,微软在美国西雅图举办“Microsoft Ignite 2023”全球开发者大会。ChatGPT等生成式AI成为了本次大会的重要主题。 下面「AIGC开放社区」将根据大会发布的内容,盘点重要内容。 GPT-4 Turbo、 DALL E 3等全新模型 16K上下文的新GPT-3.5 Turbo模…...

应用架构的演进 I 使用无服务器保证数据一致性
在微服务架构中,一个业务操作往往需要跨多个服务协作完成,包含了读取数据和更新多个服务的数据同时进行。在数据读取和写入的过程中,有一个服务失败了,势必会造成同进程其他服务数据不一致的问题。 亚马逊云科技开发者社区为开发者…...

jupyter修改默认打开目录
当我们打开jupyter notebook(不管用什么样的方式打开,使用菜单打开或者是命令行打开是一样的)会在默认的浏览器中看到这样的界面、 但是每一台不同的电脑打开之后的界面是不同的,仔细观察就会发现,这里面现实的一些文件…...

HTML5学习系列之标题和正文、描述性信息
HTML5学习系列之标题和正文、描述性信息 标题和正文标题段落 描述性信息强调注解备选上下标术语代码预定义格式缩写词编辑提示引用引述换行显示修饰非文本注解 总结 标题和正文 标题 按语义轻重排列:h1\h2\h3\h4\h5\h6 <h1>诗词介绍</h1> <h2>…...

互联网医院系统:数字化时代中医疗服务的未来
随着数字化时代的发展,互联网医院系统在医疗服务中的作用日益凸显。本文将讨论互联网医院系统的一些关键技术方面,探讨这些技术如何推动医疗服务进入数字化时代。 1. 数据智能与个性化服务 互联网医院系统依赖于大数据分析和人工智能技术,…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...