当前位置: 首页 > news >正文

Maven基本使用

1. Maven前瞻


Maven官网:https://maven.apache.org/

Maven镜像:https://mvnrepository.com

image-20240706110401287

1.1、Maven是什么

Maven是一个功能强大的项目管理和构建工具,可以帮助开发人员简化Java项目的构建过程。

在Maven中,使用一个名为 pom.xml的核心配置文件来管理项目的依赖关系、编译设置、打包和部署等操作。


1.2、Maven的作用

  • 管理依赖(管理jar包)
  • 提供统一项目结构规范
  • 项目构建:使用一条命令就能实现一键构建(如 编译、测试、打包、发布等)

1.3、Maven的仓库类型

  • 本地仓库:本机电脑上缓存jar包的文件夹。默认是在 C:\Users\用户名\.m2\repository
  • 私服:由一些公司、组织搭建的仓库服务,通常是内部使用的
  • 中央仓库:由Maven官方维护的仓库,有世界上最全的开源jar包

1.4、Maven加载jar包的顺序

  1. Maven优先会从本地仓库加载jar包

  2. 如果本地仓库没有的话:

    • 如果有私服,就从私服下载jar包到本地仓库,然后再从本地仓库里引用

    • 如果没有私服,就从中央仓库下载jar包到本地仓库,然后再从本地仓库里引用

image-20240706105004198


1.5、Maven安装

1、下载maven安装包,解压到一个不含中文、空格、特殊字符的路径下。

2、配置环境变量 MAVEN_HOME、Path,然后cmd里执行 mvn -v 验证是否安装成功。

3、修改conf\settings.xml ,配置本地仓库路径:

<localRepository>本地仓库路径</localRepository>

4、修改conf\settings.xml,配置阿里云镜像仓库:

<mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>

1.6、IDEA集成Maven

1、配置Maven

image-20240706105849486

2、增加运行的参数: -DarchetypeCatalog=local,让Maven从本地仓库加载骨架信息;选择使用JDK11

image-20240706105957983


1.7、Maven的依赖范围

  • compile:默认的依赖范围,全范围有效。
  • test:单元测试有效。src/test里有效,src/main里无效。打包时会忽略
  • provided:编译时有效,运行时使用其它地方提供的jar包。备胎。打包时会忽略
  • runtime:运行时有效,编译时无效。比如:数据库驱动包
  • system:引入仓库之外的本地jar包。少用

实际开发中特殊的jar包:

  • Junit:依赖范围通常设置为test
  • servlet-api, jsp-api:依赖范围通常设置为provided
  • 数据库驱动包:依赖范围可以是默认的,也可以是runtime
  • 其它包,绝对多数都是默认依赖范围

1.8、项目构建的生命周期

Maven的三套生命周期:

  1. 清理生命周期:CleanLifeCycle

    常用命令有:clean

  2. 默认生命周期(构建生命周期):DefaultLifeCycle

    常用命令有:compile->test->package->install->deploy

  3. 站点生命周期:SiteLifeCycle

    常用命令有:site。生成Maven项目的描述信息文档

生命周期的作用:如果执行了一个目标命令:Maven会把生命周期里的命令,从第一个一直执行到目标命令为止。

  • clean:清理。执行后会删除项目的target文件夹【掌握】

  • compile:编译。编译项目源码,把编译的结果放到target目录里【掌握】

  • test:单元测试。注意:单元测试类必须放到src\test\java里,类名要求以Test结尾

  • package:打包。常见打包方式有:

    • jar:默认就是jar包

    • war:以前开发的时候,web项目要打成war包。

    • 设置打包方式:在pom.xml里添加 <packaging>打包方式</packaging>


1.9、引入依赖坐标

1、maven依赖标准结构,坤坤三件套:GAV

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.20</version>
</dependency>
  • groupId:公司域名反写
  • artifactId:项目名称
  • version:项目的版本号(SNAPSHOP快照版本,RELEASE稳定版本 )

2、如果引入的依赖在父工程中被锁定了,则不需要加版本号:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!--<version>2.7.10</version>-->
</dependency>

2. 依赖冲突


Maven中添加的依赖是具有传递性的,如果项目中间接引入多个同名的依赖就会产生冲突,那么如何解决呢?

2.1、如何查看依赖冲突

方式1:以命令行方式查看依赖树(不建议用,依赖多的时候,不好查找)

mvn -Dverbose dependency:tree

方式2:使用 Maven Helper 插件查看

使用教程:https://blog.csdn.net/u011066470/article/details/135943032

image-20240706114319537


2.2、解决依赖冲突

  • 路径最短优先原则:主要根据依赖的路径长短来决定引入哪个依赖

    • 最先声明优先原则:如果两个依赖的路径一样,声明在前的则优先选择。

    • 排除依赖:使用exclusion标签排除依赖

    • 封装成rpc服务

image-20240706115001908

相关文章:

Maven基本使用

1. Maven前瞻 Maven官网&#xff1a;https://maven.apache.org/ Maven镜像&#xff1a;https://mvnrepository.com 1.1、Maven是什么 Maven是一个功能强大的项目管理和构建工具&#xff0c;可以帮助开发人员简化Java项目的构建过程。 在Maven中&#xff0c;使用一个名为 pom.…...

在Linux系统中配置GitHub的SSH公钥

在Linux系统中配置GitHub的SSH公钥&#xff0c;可以让您无需频繁输入密码即可与GitHub仓库进行交互&#xff0c;提高工作效率。以下是配置步骤: 第一步&#xff1a; 检查SSH密钥是否存在 首先&#xff0c;检查您的用户目录下的.ssh文件夹中是否已有SSH密钥。打开终端&#xff0…...

小酌消烦暑|人间正清欢

小暑是二十四节气之第十一个节气。暑&#xff0c;是炎热的意思&#xff0c;小暑为小热&#xff0c;还不十分热。小暑虽不是一年中最炎热的时节&#xff0c;但紧接着就是一年中最热的节气大暑&#xff0c;民间有"小暑大暑&#xff0c;上蒸下煮"之说。中国多地自小暑起…...

C语言结构体的相关知识

前言 从0开始记录我的学习历程&#xff0c;我会尽我所能&#xff0c;写出最最大白话的文章&#xff0c;希望能够帮到你&#xff0c;谢谢。 1.结构体类型的概念及定义 1.1、概念&#xff1a; 结构体是一种构造类型的数据结构&#xff0c; 是一种或多种基本类型或构造类型的数…...

RabbitMQ入门教程(精细版二带图)

目录 六 RabbitMQ工作模式 6.1Hello World简单模式 6.1.1 什么是简单模式 6.1.2 RabbitMQ管理界面操作 6.1.3 生产者代码 6.1.4 消费者代码 6.2 Work queues工作队列模式 6.2.1 什么是工作队列模式 6.2.2 RabbitMQ管理界面操作 6.2.3 生产者代码 6.2.4 消费者代码 …...

IO、零拷贝、多路复用、connection、池化

目录 一、IO 模型 二、什么是网络IO 三、什么是零拷贝 四、多路复用 五、java程序、mysql JDBC connection关系 六、connection怎么操作事务 七 、java里面的池化技术 八、线程池7个核心参数 九、线程的状态 一、IO 模型 BIO &#xff1a;同步阻塞io&#xff0c;单线程 内存上下…...

Lua 错误处理

Lua 错误处理 Lua是一种轻量级的编程语言&#xff0c;广泛用于游戏开发、脚本编写和其他应用程序中。在编程过程中&#xff0c;错误处理是一个重要的方面&#xff0c;它可以帮助开发者创建更健壮和可靠的程序。本文将详细介绍Lua中的错误处理机制。 错误类型 在Lua中&#x…...

二刷力扣——单调栈

739. 每日温度 单调栈应该从栈底到栈顶 是递减的。 找下一个更大的 &#xff0c;用递减单调栈&#xff0c;就可以确定在栈里面的每个比当前元素i小的元素&#xff0c;下一个更大的就是这个i&#xff0c;然后弹出并记录&#xff1b;然后当前元素i入栈&#xff0c;仍然满足递减…...

elementPlus-vue3-ts表格单选和双选实现方式

记录在vue3、ts、element-plus环境下表格单选和多选的实现方式 单选 html部分 <el-table...reftaskTableRefselect"selectClick"... ><el-table-column type"selection" width"50" />... </el-table>ts部分 const taskTabl…...

Linux系统中卸载GitLab

在Linux系统中卸载GitLab&#xff0c;主要可以通过包管理器&#xff08;如apt、yum、rpm等&#xff09;来实现&#xff0c;但具体步骤可能会因GitLab的安装方式&#xff08;如使用包管理器安装、从源代码安装、使用Docker等&#xff09;和Linux发行版的不同而有所差异。以下是一…...

基于STM32F407ZG的FreeRTOS移植

1.从FreeRTOS官网中下载源码 2、简单分析FreeRTOS源码目录结构 2.1、简单分析FreeRTOS源码根目录 &#xff08;1&#xff09;Demo&#xff1a;是官方为一些单片机移植FreeRTOS的例程 &#xff08;2&#xff09;License&#xff1a;许可信息 &#xff08;3&#xff09;Sourc…...

【IT领域新生必看】Java编程中的神奇对比:深入理解`equals`与`==`的区别

文章目录 引言什么是操作符&#xff1f;基本数据类型的比较示例&#xff1a; 引用类型的比较示例&#xff1a; 什么是equals方法&#xff1f;equals方法的默认实现示例&#xff1a; 重写equals方法示例&#xff1a; equals与的区别比较内容不同示例&#xff1a; 使用场景不同示…...

WEBHTTP

目录 理解HTTP协议请求流程 1 1 Web基础 2 Hosts文件 1 1 2网页与HTML 2 HTML概述 1 1 3静态网页与动态网页 1.2HTTP协议 1 2 1 HTTP协议概述 1 2 2 HTTP方法 HTTP支持几种不同的请求命令&#xff0c;这些命令被称为HTTP方法(HTTP method 表1一3 HTTP方法 表1&#…...

nodejs 获取客服端ip,以及获取ip一直都是127.0.0.1的问题

一、问题描述 在做登录日志的时候想要获取客户端的ip, 网上查了一下 通过 req.headers[x-forwarded-for] || req.connection.remoteAddress; 获取&#xff0c; 结果获取了之后不管是开发环境&#xff0c;还是生产环境获取到的一直都是 127.0.0.1&#xff0c;这是因为在配置N…...

微软与OpenAI/谷歌与三星的AI交易受欧盟重点关注

近日&#xff0c;欧盟委员会主管竞争事务的副主席玛格丽特维斯塔格(Margrethe Vestager)在一次演讲中透露&#xff0c;欧盟反垄断监管机构将就微软与OpenAI的合作&#xff0c;以及谷歌与三星达成的AI协议寻求更多第三方意见。这意味着微软与 OpenAI、谷歌与三星的 AI 交易及合作…...

微信小程序毕业设计-学生实习与就业管理系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…...

spring boot 接口参数解密和返回值加密

spring boot 接口参数解密和返回值加密 开发背景简介安装配置yml 方式Bean 方式 试一下启动项目返回值加密参数解密body 参数解密param和form-data参数解密 总结 开发背景 虽然使用 HTTPS 已经可以基本保证传输数据的安全性&#xff0c;但是很多国企、医疗、股票项目等仍然要求…...

C语言自定义类型——联合体、枚举

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、联合体&#xff08;一&#xff09;、联合体的声明&#xff08;二&#xff09;、联合体的特点&#xff08;三&#xff09;、联合体大小的计算&#xff01;&a…...

【trition-server】pytorch 文档:使用 Triton 提供 Torch-TensorRT 模型

Serving a Torch-TensorRT model with Triton pytorch 的官方文档: Serving a Torch-TensorRT model with Triton 在有关机器学习基础设施的讨论中,优化和部署是密不可分的。一旦完成网络级优化以获得最大性能,下一步就是部署它。 然而,提供这种优化模型也有其自身的一系列…...

wps 表格如何实现vlookup高级模糊搜索

一、VLOOKUP 模糊搜索 在 WPS 表格中&#xff0c;可以通过使用 VLOOKUP 函数和通配符来实现高级模糊搜索。这里有一个具体的示例来帮助你理解如何进行这些操作。 示例&#xff1a;实现 VLOOKUP 高级模糊搜索 假设我们有以下数据集&#xff1a; AB产品编号产品名称001苹果00…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...