Java学习路线:Maven(一)认识Maven
目录
认识Maven
新建Maven文件
导入依赖
认识Maven
Maven是一个Java的项目管理工具,通过Maven,我们可以实现:
- 项目自动构建,包括代码的编译、测试、打包、安装等
- 依赖管理,快速完成依赖的导入
在学习Maven之前,我们导入依赖都需要先下载jar包,而且还有可能一个jar包依赖另一个jar包,就十分麻烦,因此需要一个更加方便的包管理机制
新建Maven文件
在IDEA中自带了Maven环境,就不需要再安装了
直接点击新建项目,选择Maven,就可以新建一个maven项目了
Maven项目的结构如图:
可以看到,src下有两个文件夹,分别为Java和test,一般来说我们直接在Java文件夹中编写代码,test文件夹用于测试
在java文件夹内,还有一个resource文件夹,主要用于存放配置文件和静态资源
此外,还有pom.xml文件,是用于Maven的配置
我们来看看这个pom.xml文件里有什么内容:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>HelloMaven</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties></project>
- Project表示这是一个Maven项目
- modelVersion说明了项目的版本
- groupId、artifactID、version这三个元素合在一起,用于唯一区分每一个项目
如果别人将我们的代码作为依赖,就需要用这三个元素定位这个项目,称为一个项目的基本坐标
每个项目都有自己的Maven坐标,因此我们通过Maven导入其他依赖的时候只需要填写这三个基本元素就可以了,无需再下载Jar文件
其中,
- groupId 一般用于指定组的名称,命名规则和包名一致
- artifactId 一般用于指定项目在当前组中的唯一名称,用于区分其他项目
- version 表示当前项目的版本,在项目开发的过程中,版本会不断的更新
- properties中一般是一些变量和选项的配置,无需修改
导入依赖
在Maven中如何导入依赖呢?
首先创建一个dependencies节点:
<dependencies>//里面填写所有的依赖
</dependencies>
创建好节点后,就可以在节点中添加依赖了
那么,如何知道每个依赖的坐标呢?
可以在Maven Repository: Search/Browse/Explore中查询
假如,我们这里想要导入LomBok依赖:
将代码复制到dependencies中即可
注意,刚复制进去的时候代码可能会爆红,这是刷新一下maven仓库就好(idea右边菜单栏的m就是Maven仓库)
为什么通过坐标就可以定位依赖呢?
Maven项目依赖的管理流程如下:
几乎所有的依赖都被放进了中央仓库中,少量依赖存储在其他远程仓库(私服),从远程仓库下载后,依赖会暂时存储在本地仓库。本地仓库的地址在 C:\Users\用户名\.m文件夹下,这个文件夹中我们可以查看到现在本地有的所有依赖
在idea左侧的文件栏中,也可以查看当前项目导入的依赖:
相关文章:

Java学习路线:Maven(一)认识Maven
目录 认识Maven 新建Maven文件 导入依赖 认识Maven Maven是一个Java的项目管理工具,通过Maven,我们可以实现: 项目自动构建,包括代码的编译、测试、打包、安装等依赖管理,快速完成依赖的导入 在学习Maven之前&…...

【深度学习】— 多输入多输出通道、多通道输入的卷积、多输出通道、1×1 卷积层、汇聚层、多通道汇聚层
【深度学习】— 多输入多输出通道、多通道输入的卷积、多输出通道、11 卷积层、汇聚层、多通道汇聚层 多输入多输出通道多通道输入的卷积示例:多通道的二维互相关运算 多输出通道实现多通道输出的互相关运算 11 卷积层11 卷积的作用 使用全连接层实现 11 卷积小结 …...

java mapper 的 xml讲解
<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace"com.bnc.s12.mapper.GoodaCateDT…...

全面解析:区块链技术及其应用
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 全面解析:区块链技术及其应用 文章目录 全面解析:区块链技术及其应用什么是区块链区块链的工作原理1. 分…...

python基础学习笔记
本文类比c语言讲解python 一.变量和类型 前缀小知识: 注意:1.python写每一行代码时,结尾不需要 ; 这点是和c语言有很大区别的 2.代码的缩进(就是每行代码前面的空格)是非常重要的后文会提到 1.定义变量 注意: 和C/C …...

【dvwa靶场:XSS系列】XSS (DOM) 低-中-高级别,通关啦
一、低级low 拼接的url样式: http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default 拼接的新内容 <script>alert("假客套")</script> 二、中级middle 拼接的url样式: http://127.0.0.1/dvwa/vuln…...

ONLYOFFICE 8.2深度体验:高效协作与卓越性能的完美融合
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ONLYOFFICE 8.2 🔍引言📒1. ONLYOFFICE 产品简介📚2. 功能与特点🍁协作编辑 PDF🍂…...

Mac如何将多个pdf文件归并到一个
电脑:MacBook Pro M1 操作方式: very easy 选中想要归并的所有pdf文件,然后 右键 -> quick actions -> Create PDF 然后就可以看到将所选pdf文件归并为一个pdf的文件了...

LINUX下的Mysql:Mysql基础
目录 1.为什要有数据库 2.什么是数据库 3.LINUX下创建数据库的操作 4.LINUX创建表的操作 5.SQL语句的分类 6.Mysql的架构 1.为什要有数据库 直接用文件直接存储数据难道不行吗?非得搞个数据库呢? 首先用文件存储数据是没错,但是文件不方…...

自然语言处理方向学习建议
自然语言处理方向学习建议 自然语言处理(NLP)作为人工智能的一个重要分支,近年来在学术界和工业界都取得了显著的发展。作为即将或正在攻读博士学位的你,投身于NLP领域无疑是一个充满挑战与机遇的选择。以下是一些针对NLP方向学习…...

介绍一下如何生成随机数(c基础)
适合对象 c语言初学者 总结语言用色,个人强调用红色,注意为易错点,若有问题请告诉我谢谢。(建议通过目录观看)。一定要自己动手打代码。 rand函数 是生成随机数的函数,但实则是伪随机数。(即是同一个值) 格式 #include<st…...

24-11-1-读书笔记(三十一)-《契诃夫文集》(五)下([俄] 契诃夫 [译] 汝龙)生活乏味但不乏魅力。
文章目录 《契诃夫文集》(五)下([俄] 契诃夫 [译] 汝龙)生活乏味但不乏魅力。目录阅读笔记总结 《契诃夫文集》(五)下([俄] 契诃夫 [译] 汝龙)生活乏味但不乏魅力。 休息,…...

从“点”到“面”,热成像防爆手机如何为安全织就“透视网”?
市场上测温产品让人眼花缭乱,通过调研分析,小编发现测温枪占很高比重。但是,测温枪局限于显示单一数值信息,无法直观地展示物体的整体温度分布情况,而且几乎没有功能拓展能力。以AORO A23为代表的热成像防爆手机改变了…...

基于vue框架的的奶茶店预约订单系统3fb55(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
系统程序文件列表 项目功能:用户,奶茶分类,奶茶信息 开题报告内容 开题报告 题目:基于Vue框架的奶茶店预约订单系统开发 一、研究背景与意义 背景 随着饮品市场的蓬勃发展,奶茶店作为其中的重要组成部分,其业务量和顾客需求持…...

项目实战使用gitee
1.创建本地仓库 2.进行提交到本地仓库 创建仓库后在idea中会显示图标,点击绿色的√进行快速提交 3.绑定远程仓库 4.番外篇-创建gitee仓库 注意不要勾选其他...

数据结构--二叉树_链式(下)
实现链式结构二叉树 链式结构就是由一个一个的节点组成。 ⽤链表来表⽰⼀棵⼆叉树,即⽤链来指⽰元素的逻辑关系。 通常的⽅法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别⽤来给出该结点左孩⼦和右孩⼦所在的链结点的存储…...

unity游戏开发之--人物打怪爆材料--拾进背包的实现思路
unity游戏开发之–人物打怪爆材料–拾进背包的实现思路 游戏实现:unity c# 1、敌人(怪物)的生命值和伤害系统 using UnityEngine; using System.Collections.Generic;public class Enemy : MonoBehaviour {[Header("基础属性")]…...

AWTK文件系统适配器更新-支持RT-Thread DFS POSIX接口
介绍 AWTK 文件系统适配器。 在嵌入式平台中,有时没有 POSIX 兼容的文件系统 API,需要把一些文件系统实现,包装成 AWTK 的 fs 接口。本项目提供一些常见文件系统的适配,目前支持的文件系统有: FATFS 主要用于访问 TF…...

C#如何快速获取P/Invoke方法签名
使用API函数已经好几年了,封装函数签名基本是参照MSDN上的文档,然后再做数据类型对应。 虽然有 pinvoke.net 这个网站,但基本很少使用。一方面是想多动手,另一方面是因为各种数据类型基本都用过了,都能自己在C#中 对应…...

CqEngine添加联合索引和复合唯一索引
一.实体类 Data public class CategoryT {private Integer id;private String oneCategory;private String twoCategory;private String createTime;private String updateTime;public String uniKey() {return oneCategory "/" twoCategory;} }二.集合 Suppress…...

基于matlab的SVPWM逆变器死区补偿算法仿真研究
背景介绍: 三相脉宽调制(pulse width modulation,PWM)电压源逆变器(voltage source inverter,VSI)的死区效应可导致电机相电压和相电流畸变、零电流钳位效应以及转矩和转速脉动,系统性能降低。为提高系统运行性能,对V…...

【网页设计】CSS 定位
目标 能够说出为什么要用定位能够说出定位的4种分类能够说出4种定位各自的特点能够说出为什么常用子绝父相布局能够写出淘宝轮播图布局能够说出显示隐藏的2种方式以及区别 1. 定位 1.1 为什么需要定位 提问: 以下情况使用标准流或者浮动能实现吗?1. …...

scala的属性访问权限
scala的属性访问权限有四种: 默认访问权限;protected访问权限;private访问权限;private[this]访问权限 package Test1104 //访问控制权限// 类的内部方法 伴生对象中的方法 类的外部(对象,访问)…...

QGIS:HCMGIS插件
插件GitHub地址:https://github.com/thangqd/HCMGIS。 以下对HCMGIS插件进行简单介绍,并演示如何进行地图数据下载。 插件简介 HCMGIS - Basemaps, Download OpenData, Batch Converter, VN-2000 Projections, and Field Calculation Utilities for QGI…...

Melty 主体流程图
┌───────────┐ │ 用户输入 │ └─────┬─────┘ │(自然语言或指令) │ ▼ ┌───────────┐ │ 自然语言处理 │ │ (NLU 模块)│ └─────┬─────┘ │ │ 解析用户意图 │ ▼ ┌─…...

【图像与点云融合教程(五)】海康相机 ROS2 多机分布式实时通信功能包
0. 前言 Github 仓库链接:Hikvision Camera ROS2 package 0.1 问题背景 上一篇[博客](【图像与点云融合教程(四)】海康相机 ROS2 功能包 - 古月居 (guyuehome.com))介绍了我开源的海康相机 ROS2 功能包,在本地机器上可以实时订…...

正则截取字符窜数字,字母,符号部分
Testvoid test20() {String str "BJRabG11325F9**0**";// 提取字母部分String letterPart str.replaceAll("[^a-zA-Z]", "");String noLetterPart str.replaceAll("[a-zA-Z]", "");System.out.println("字母部分&am…...

【ChatGPT】让ChatGPT生成跨语言翻译的精确提示
让ChatGPT生成跨语言翻译的精确提示 在跨语言交流中,为了确保翻译的准确性,生成精确的提示(Prompt)来指导ChatGPT翻译内容是至关重要的。无论是要处理复杂的技术术语、俚语,还是保持特定的语言风格,使用有…...

Vue3父传子
1. App.vue - 父组件 咱们先来看左边的 App.vue,它扮演的是“父亲”角色——你可以想象它是一位热心的老爸,手里拿着一条消息,正准备把这条消息送到“儿子”那里。 <script setup> // 这个 setup 就像一个神奇的开关,一开…...

使用VBA宏合并多个Excel文件的Sheet页
使用VBA宏合并多个Excel文件的Sheet页 在日常的Excel数据处理工作中,我们经常需要将多个Excel文件中的工作表合并到一个Excel文件中。这种操作可以极大地提高数据处理效率,但如果文件数量较多,手动合并会非常繁琐。本文将介绍如何使用VBA宏来…...