Maven基础

目录

Maven坐标

坐标简介 

主要组成

Maven依赖管理 

配置依赖 

依赖简介

配置依赖

依赖传递

依赖传递简介 

排除依赖

 依赖范围

生命周期

生命周期简介 

 执行指定生命周期


Maven坐标

坐标简介 

Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。

可以使用坐标来定义项目或引入项目中需要的依赖。

主要组成

groupld 定义当前Maven项目隶属组织名称 

artifactld 定义当前Maven项目名称(通常是模块名称 例如order-service,goods-service)

version 定义当前项目版本号 

Maven依赖管理 

配置依赖 

依赖简介

当前项目运行所需要的jar包,一个项目可以引入多个依赖

配置依赖

  1.  在pom.xml中编写<dependencies>标签
  2. 在<dependencies>标签中使用<dependency>引入坐标
  3. 定义坐标的groupld,artifactld,version
  4. 点击刷新按钮,引入新添加的坐标
<dependencies><!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency>
</dependencies>

如果引入的依赖在本地仓库不存在,将会连接远程/中央仓库,然后下载依赖。

如果不知道依赖的坐标信息,可以在中Maven仓库官网中搜索

依赖传递

依赖传递简介 

依赖具有传递性

直接依赖 在当前项目中通过依赖配置建立的依赖关系

间接依赖 被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

排除依赖

由于依赖传递的特性,如果我们需要b项目,但不需要b项目依赖的某个项目,可以通过如下方式排除该依赖

以排除projectA由于依赖projectB,而依赖的junit为例

 插入exclusions标签,并在groupId,artifactId中填写要排除的依赖,不需要指定版本

<dependency><groupId>com.itheima</groupId><artifactId>maven-projectB</artifactId><version>1.0-SNAPSHOT</version><exclusions><exclusion><groupId>junit</groupId><artifactId>junit</artifactId></exclusion></exclusions>
</dependency>

重新加载,发现projectA不再依赖于junit

 依赖范围

依赖的jar包,默认情况下可以在任何地方使用。

可以通过<scope>标签设置其作用范围

作用范围

主程序范围有效(main文件夹范围内)

测试程序范围有效(test文件夹范围内)

是否参与打包运行(package指令范围内)

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version><scope>test</scope>
</dependency>
scope值主程序测试程序打包(运行)范例
comile(默认)    √     √      √log4j
test    ×     √      ×junit
provided     √     √      ×servlet-api
runtime     ×     √      √ jdbc驱动

生命周期

生命周期简介 

 Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一

每套生命周期包含一些阶段,阶段是有顺序的,后面的阶段依赖于前面的阶段

有三套生命周期 clean  default  site

在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行(运行install,clean不会运行因为他们不属于同一套生命周期)

主要关注如下五个阶段 

clean 移除上一次构建生成的元素

compile 编译项目源代码

test 使用合适的单元测试框架进行测试(junit)

package 将编译后的文件打包,如jar,war

install 安装项目到本地

 执行指定生命周期

  1. 在idea右侧的maven工具栏选中对应的生命周期双击
  2. 在命令行中通过命令执行 如mvn compile

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/211891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis交互速度慢,CPU占用100%,集群方案,报错等问题

后续补充结论 仔细查看前辈们堆的代码中发现居然调用了大量key*查询&#xff0c;导致走的遍历非常慢&#xff01;因为这相当与全部数据量遍历&#xff0c;即这个原因导致了查询速度与数据量成正比&#xff0c;推测也是CPU占用高的元凶&#xff1b;即使加上key前缀再匹配*也会走…

Python开发运维:Python调用K8S API实现资源管理

目录 一、实验 1.Python操作K8S API获取资源 2.Python操作K8S API创建deployment资源 3.Python操作K8S API删除k8s资源 4.Python操作K8S API修改k8s资源 5.Python操作K8S API查看k8s资源 二、问题 1.Windows11安装kubernetes报错 2.Python通过调用哪些方法实现Pod和De…

在SpringData JPA 中实现对持久层的操作

1.导入依赖 hibernate 这个依赖自带实现JPA接口 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><depen…

TCP三次握手、四次挥手及状态转换详解

1.什么是TCP协议&#xff1f; 传输控制协议&#xff08;TCP&#xff0c;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议&#xff0c;位于网络OSI七层模型的第四层&#xff0c;IP协议一起工作&#xff0c;TCP层是位于IP层之上…

(Spring学习07)Spring之启动刷新过程源码解析

概述 通常&#xff0c;我们说的Spring启动&#xff0c;就是构造ApplicationContext对象以及调用refresh()方法的过程。 首先&#xff0c;Spring启动过程主要做了这么几件事情&#xff1a; 构造一个BeanFactory对象解析配置类&#xff0c;得到BeanDefinition&#xff0c;并注册…

CrystalDiskInfo中文版(硬盘检测工具) v9.1.1.0 绿色汉化版-供大家学习研究参考

更新内容 重新支持三星SATA SSD寿命报告 增加对ZHITAI SC001的支持 新增SK hynix Gold S31支持 增加了KLEVV NEO N610的支持。 改进的Micron/Crucial SATA SSD支持 已更改 卸载程序将显示一个确认对话框&#xff0c;用于删除设置。 强大功能 1.拥有多国语言&#xff0c;…

27 动态规划解最大子序和

问题描述&#xff1a;给定一个整数数组nums&#xff0c;找到一个具有最大和的连续子数组(子数组最少含有一个元素)&#xff0c;返回其最大和。 动态规划求解&#xff1a;定义dp[i]表示以i元素为结尾的最大和&#xff0c;如果dp[i-1]小于零的话&#xff0c;dp[i]nums[i],否则dp…

React-hook-form-mui(三):表单验证

前言 在上一篇文章中&#xff0c;我们介绍了react-hook-form-mui的基础用法。本文将着重讲解表单验证功能。 react-hook-form-mui提供了丰富的表单验证功能&#xff0c;可以通过validation属性来设置表单验证规则。本文将详细介绍validation的三种实现方法&#xff0c;以及如何…

ts中type和interface类型声明的区别

1. 写法上 type 使用关键字 type 进行声明。 interface 使用关键字 interface 进行声明。 // 使用 type type MyType {param: string; };// 使用 interface interface MyInterface {param: string; }2. 可合并性 interface 具有可合并性&#xff0c;允许在同一作用域内多次…

045:Vue读取本地上传JSON文件,导出JSON文件方法

第045个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

jquery手写广告轮播图,无限循环功能

说明 在很多情况下&#xff0c;我们都需要开发广告轮播图&#xff0c;当我们进行页面的功能开发时&#xff0c;采用轮播图来实现也行&#xff0c;但是很多情况下&#xff0c;我们只需要简单的控制轮播循环轮播展示即可&#xff0c;所以用jq开开发广告轮播波&#xff0c;自定义…

spring更加松散的获取bean的方式ObjectProvider

概述 ObjectProvider直译就是对象提供者; 平时从spring中获取bean都是调用beanFactory.getBean()方法&#xff0c;如果bean不存在则会直接抛异常; 从spring 4.3开始引入了org.springframework.beans.factory.ObjectProvider接口,其提供了若干的方法&#xff0c;可以更松散的…

Idea 插件开发: Swing Designer设计器创建的组件全部为空问题记录

问题现象 通过Swing 设计器创建的对象, Swing组件全部是空的, 导致ToolWindowFactory工厂的实现类调用时候出现了空指针异常 如下方式创建的 问题分析 问题出现时候, 同时给我生成了一个createUIComponents的私有方法, 由于个人当时理解有误, 把他当成了初始化方法, 在里面…

Oracle高可用一家老小全在这里

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

用Java实现一对一聊天

目录 服务端 客户端 服务端 package 一对一用户; import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; imp…

s3-dist-cp 介绍教程示例使用方法

s3-dist-cp 是 AWS EMR 内置的用于 S3 和 HDFS 之间文件拷贝的专用工具,与 Hadoop 的 distcp 类似,也是通过 Map-Reduce 作业的方式实现分布式的文件复制(distcp 就是 distributed copy 分布式拷贝的意思)。 s3-dist-cp 并不是一个简单的在 S3 和 HDFS 之间拷贝文件的工具…

SpringBoot中MyBatis-Flex的集成和使用

一、MyBatis-Flex 是什么​ MyBatis-Flex是一个基于MyBatis的数据访问框架&#xff0c;专门为Flex应用程序而设计的。它提供了一种灵活而高效的方式来处理Flex应用程序中的数据访问&#xff0c;可以轻松地连接到各种数据源&#xff0c;并提供了一些方便的工具和功能&#xff0c…

虚拟机和主机间复制粘贴

文章目录 前言一、版本介绍二、安装工具1.确认配置2.安装工具3.重启 总结 前言 在Windows中使用虚拟机&#xff0c;可以很方便地linux&#xff0c;就像是在本地操作服务器一样。 一、版本介绍 虚拟机&#xff1a;VMware 15 操作系统&#xff1a;CentOS 7 二、安装工具 1.确…

delphi android打开外部文件,报错android.os.FileUriExposedException解决方法

Android 7.0强制启用了被称作 StrictMode的策略&#xff0c;带来的影响就是你的App对外无法暴露file://类型的URI了。 如果你使用Intent携带这样的URI去打开外部App(比如&#xff1a;打开系统相机拍照)&#xff0c;那么会抛出FileUriExposedException异常。 Delphi 为Android…

C++(14):通过tuple在构造对象时注入类型不确定的对象/插件

有的时候我们需要在构建对象时注入一系列类型不确定的对象或插件,怎么才能实现呢? #include <iostream> #include <string> #include <tuple>using namespace std;class A{ public:A(int a) : m_a(a){cout<<"construct A:"<<m_a<…