后端之路第一站——Maven

前提:得会基础java

  前言:不知道出于什么原因,可能是喜欢犯贱吧,本人从大一到大二都一直在专研前端开发,一点也没接触过后端,但是突然抽风想学后端了,想试着自己全栈搞一下项目,于是在友仔建议下开始先从maven学起,接下来是我的后端maven学习笔记记录,有不对的地方还请指正

  另外,阁下的学习视频是黑马的《黑马程序员JavaWeb开发教程》:Day04-01. maven-课程介绍_哔哩哔哩_bilibili 但是因为前面前端的部分我都学过了,就直接从maven部分开始学了

一、maven是啥?

百度百科的解释(跳过不看,没用)

简单来说一款统一管理Java代码项目的工具,就有这三功能:

(长话短说)

1、依赖管理:后端开发要引用很多外部依赖文件,什么jar包,用了maven就可以写一两句代码就自动安装配置好到你的项目,不用我们手动复制粘贴再配置

2、统一项目结构,不同开发软件的项目的结构不一样,ecslipe跟idea的项目文件肯定不能直接互相复制、打开,那么如果用他们写maven的项目,那么结构就是一样的

3、项目构建(maven的编译、打包这些指令,不管在window、Linux哪一个系统都可以执行)

编译(1、点击maven工程   2、点击右边侧边maven   3、找到Lifecycle目录下的compile,双击)

编译好的文件在这

打包(同样,双击package这个,就自动打包)

打包完还是在这

二、安装配置

1、下载压缩包资源

下载官网:nginx: download

下载这个版本,然后把文件解压,这里注意几点:

1、很多人会喜欢直接在下载文件的目录解压到别的目录,别!!先把它整个复制到你以后要一直放的路径!!再解压!!!

2、解压的路径不要!不要!不要带中文!不要带空格!要英文路径!!

3、把里面的这个[ apache-maven-版本号 ]文件夹解压出来

2、配置本地仓库(需要jar包资源的时候连接maven的中央仓库,下载完就放在本地仓库)

在刚刚maven的主目录新建一个文件夹,叫“mvn_repo”,别管为啥,创建就是了

然后打开这个文件,编译器、文本打开都行

然后找到这块代码,很好找的

复制这个代码到注释外面

<localRepository>/path/to/local/repo</localRepository>

然后把中间的"/path/to/local/repo"换成刚刚【mvn_repo】这个文件夹的路径

3、配置阿里云私服(下载速度更快)

还是在刚刚配置本地仓库那个文件代码,找到含<mirrors>这块的代码

把下面这段代码复制进<mirrors></mirrors>里面、换掉下面蓝色那一部分

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

去掉这块

换上这块

当然用idea或者vscode打开看着会更方便

4、配置适合我们java有的JDK

maven可能默认的JDK不适应我们原本写java时我们安装的JDK版本,要把下面这个代码插进去,让maven全局适配你想要的JDK版本

<!-- java版本 --><profile><id>jdk-【你的版本号】</id><activation><activeByDefault>true</activeByDefault><jdk>【你的版本号】</jdk></activation><properties><maven.compiler.source>【你的版本号】</maven.compiler.source><maven.compiler.target>【你的版本号】</maven.compiler.target><maven.compiler.compilerVersion>【你的版本号】</maven.compiler.compilerVersion></properties></profile>

不知道自己jdk的“白瓷们”,可以输入【java -version】就可以查看到自己的jdk版本号

放到<profiles></profiles>标签代码的里面,像这样

5、配置环境变量

新建一个系统环境变量叫【MAVEN_HOME】路径就是maven文件夹的路径

接着到path里把【%MAVEN_HOME%\bin】加进去,搞定

【注意!】别像我这么撒比,在bin前面漏了个\,

我一开始写的错的是【%MAVEN_HOME%bin】,要写成【%MAVEN_HOME%\bin】!!!!

6、最后检查

在cmd命令行输入【mvn -v】

有东西就说明配置成功

“ 'mvn'不是内部或外部命令,也不是可运行的程序 ”就说明前面有错的步骤、遗漏细节

三、在idea里配置maven项目(单个项目配置好)

1、新建项目

2、创建空项目

3、右键空项目,构建模块

4、配置这项目的JDK环境

点击【项目】/【project】,将下面图片这两地方选择对应你刚刚配置maven的那个版本JDK

英文版

然后点“应用”点“确定”,OK

5、配置这个项目跟maven关联的环境

直接点【文件】—>【设置】

中文版

选到【构建、执行、部署】—>【构建工具】—>【Maven】

把【Maven 主路径】选为你解压安装的maven那个主路径

然后就能看到下面【本地仓库(R)】那里对应也变了

然后把【用户设置文件(S)】这里点击“重写”,找到、选择【maven解压安装路径】的【conf】的【settings.xml】

然后再点击展开【Maven】,点击【运行程序】,把【JRE(J)】选为刚刚我们用的JDK版本

最后一步配置,到【编译器】—>【Java编译器】的【项目字节码版本】调成跟JDK那个版本号一样

英文版(就不详细介绍了,自己对应看就行了)

四、还有一种全局配置的方式

1、点这里

出现这个

点【自定义】,点【所有设置】

2、然后重复我文章上面【第三点】的一样的操作

英文版

五、正式创建maven项目,准备写代码

1、在一个新建项目里点击左上角【文件】—>【新建模块】

老版本idea

然后新版本的idea直接点【新建模块】(别点那个“Maven Archetype”,那个不是)

然后骚等片刻,一个moven模块就会下载好

然后在【test】文件夹右键新建一个【目录】

自动有这个,选这个,回车

六、终于开始写java代码

1、先认识一下整体大结构

然后点开pom.xml文件可以看到我们刚刚自定义的那个【组织名(groupId)】【模块名(artifactId)】

2、那我们去哪里写java代码?

我们的java代码文件要写在【项目名】—>【src】—>【main】—>【java】—>【自定义“组织名”目录】下面

1、那么第一种方式就直接右键【src】—>【main】—>下的【java】,创建java类

然后名字叫【你设置的组织名(groupId).自定义类名】,比如【com.czm.HelloWorld】,这里的意思就是在【com.czm】目录下创建一个【HelloWorld】

2、直接在【组件名groupId】目录下创建java类,直接写类名就行,看个人习惯吧

成功,另外还会多生出一个文件夹【target】,这里面放的就是编译.java文件生成对应的.class字节码文件

3、最后理解一下这块,有点用的,我懒得说了

七、导入maven项目

点侧边m图标

点击“+”号,找到一个maven模块目录,选择pom.xml文件,就可以直接导入

第二种方法,我觉得麻烦,可以看看

七、依赖配置

1、什么是依赖

黑马课程的解释

学过前端的同志们,我们可以暂理解为【npm安装】搭配【main.js】搭配【package.json】,因为我们引入“uView”组件啊、“router”、“axios”、“mock”......等等这些,都需要先在命令行“npm install xxx”,然后在main.js里写import....配置好,然后在package.json那里我们不用更改,但是我们可以在这里看到我们的“uView”组件啊、“router”、“axios”、“mock”......等等这些的版本号,看看是否被成功安装了

但是这里的“依赖”只需要直接在【pom.xml】文件写这么几个代码,就可以自动安装好并顺带着配置完毕

2、怎么写依赖

假设我们需要一个依赖包叫【logback】,怎么导入?

不需要上网查怎么配置,直接记住这些语法:

所有依赖的内容写到:<dependencies> </dependencies>标签内

<dependencies>依赖1依赖2......
</dependencies>

然后一个依赖的基本代码格式就是:

<dependcy><groupId>组名</groupId><artifactId>依赖包名</artifactId><version>版本号</version>
</dependcy>

当然可能有些人可能并不知道自己要用的这个依赖包需要什么组名、依赖包名啥的

去这个网站可以查到相关依赖包的配置代码:https://mvnrepository.com/

比如我现在要一个叫logback的依赖包,直接搜logback,然后找到第一个点击logback-classic

随便选一个版本点进去

拖到下面,复制代码配置依赖的源码

【解释一下上图红色丢掉的是啥】

<scope>是依赖的作用范围:默认(去掉<scope>)作用全局、只作用与主程序、只作用于测试程序......

现在看到代码红色的,别慌,这不是报错,是因为之前没有下载安装过这个依赖,所以本地仓库查找不到这个文件就标红了,只需要点一下右上角的一个蓝色按钮

然后就下载安装好了

3、依赖传递

简单了解一下,我们手动配置完一个依赖之后,还会自动依赖上相关的一些依赖

比如我们刚刚配置的logback依赖(下图红色),点开会发现还跟着两个我们并没有配置的依赖(下图黄色)

这样能更直观的看

你也可以排除一些绑定的依赖

八、依赖的生命周期

只需重点关注红色部分的阶段

然后注意:虽然后面的阶段依赖于前面的阶段,但是是在各自的生命周期内,比如执行了【install阶段】必然执行了【compile阶段】【test阶段】......,但是并没代表一定执行了【clean阶段】,因为clean阶段是在【clean生命周期】的,而【install阶段】是在【default生命周期】

要执行某个阶段,你就

1、@阶段 + 方法

2、双击侧边栏对应的阶段

这里提一嘴:在test里要进行单元测试,要引入这个依赖,并设置范围是test

然后好像没什么好说的了,maven就是一个工具,看完这篇了解一下怎么用就行,下一篇将开始sprint boot

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

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

相关文章

武汉星起航深耕亚马逊跨境,助力合作伙伴实现全球业务增长

在数字化浪潮席卷全球的今天&#xff0c;跨境电商业务蓬勃发展&#xff0c;成为推动国际贸易增长的重要引擎。亚马逊&#xff0c;作为全球最大的电商平台之一&#xff0c;以其独特的平台特点和全球化布局&#xff0c;为卖家和买家提供了便捷、高效的交易环境&#xff0c;成为众…

音视频开发4-补充 FFmpeg 开发环境搭建 -- 配置环境 Ubuntu 22.04.2 LTS +FFmpeg 7.0

配置环境 Ubuntu 22.04.2 LTS FFmpeg 7.0 参开如下的博客内容&#xff0c;但是实际build 中使用 FFmpeg 6.0 会有build error&#xff0c;网上查资料&#xff0c;需要使用7.0中的代码切换6.0中的一部分&#xff0c;因为嫌麻烦&#xff0c;直接换成7.0 【调试经验】Ubuntu FFm…

【网站项目】SpringBoot379儿童疫苗接种管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Python自学之路--004:Python使用注意点(原始字符串‘r’\字符转换\‘wb’与‘w区别’\‘\‘与‘\\’区别)

目录 1、原始字符串‘r’ 2、字符转换问题 3、open与write函数’wb’与’w’区分 4、Python里面\与\\的区别 1、原始字符串‘r’ 以前的脚本通过Python2.7写的&#xff0c;通过Python3.12去编译发现不通用了&#xff0c;其实也是从一个初学者的角度去看待这些问题。 其中的\…

解放双手,批量自动上传视频到微信视频号

文件夹里面有很多视频&#xff0c;一个个手工上传到视频号很麻烦&#xff0c;可以借助AI来自动化。 先把视频号上传流程熟悉一遍&#xff0c;把一些按钮截图&#xff0c;记录一些屏幕坐标。 然后&#xff0c;在deepseek的代码助手中输入提示词&#xff1a; 你是一个Python编程…

机器学习-SVM预测

本文使用机器学习SVM对数据进行预测。仅供参考 1、数据 1.1 训练数据集&#xff1a; medol.xlsx文件示例 otv3015-1.9153622093018-1.9634097763021-1.7620284083024-1.789477583 1.2 预测数据集 test.xlsx文件示例 ot35163519 2、模型训练 train.py import pandas as …

软件工程期末复习(8)需求的表达方法和状态转换图

需求的表达方法 系统模型 需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型&#xff0c;解决目标系统 “做什么” 的问题 通常软件开发项目是要实现目标系统的物理模型。目标系统的具体物理模型是由它的逻辑模型经实例化&#xff0c;即具体到某个业务领域而…

韵搜坊 -- java爬虫抓取数据

文章目录 三种抓取方式数据抓取的流程获取文章具体操作 获取用户获取图片jsoup操作 三种抓取方式 直接调用请求接口(最方便&#xff0c;这里使用该方法) HttpClient,OKHttp,RestTemplate,Hutool等网页渲染出明文内容后&#xff0c;从前端页面的内容抓取有些网站可能是动态请求…

第三十二天 | 46.全排列 47.全排列||

终于进入排列&#xff01;&#xff08;之前都是组合&#xff09; 排列和组合的区别&#xff1a;在数学上的区别都懂&#xff0c;主要是看在代码实现上有什么区别 题目&#xff1a;46.全排列 树型结构比较简单 用used标记某一元素是否使用过。在组合问题中&#xff0c;其实是…

【制作100个unity游戏之26】unity2d横版卷轴动作类游戏7(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言血条 能量条UI配置画布绘制血条 能量条UI 头像框 延迟虚血源码完结 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第26篇中&#xff0c;我们将探索如何…

数据库设计大题详解

大题一&#xff1a;画E-R图&#xff08;概念结构设计&#xff09; 实体就是具体的物品&#xff0c;关系就是实体之间的关系&#xff0c;属性就是特征&#xff0c;内涵的意思 简单的小栗子&#xff1a; 1对1&#xff0c;1对n&#xff0c;n对m&#xff0c;自己考虑两者存在这个关…

PatterNodes 3 mac矢量图设计 ,色彩与图案的完美融合!

PatterNodes 3 for Mac是一款功能强大的矢量图形模式创建软件&#xff0c;专为Mac用户设计。它采用基于节点的界面&#xff0c;支持创建形状、线条、曲线或文本&#xff0c;以构建复杂的矢量图形模式。该软件还具备灵活的参数调整功能&#xff0c;允许用户实时预览结果并进行无…

根据参考风格进行矢量图绘制

摘要 利用机器学习根据给定的文本描述生成图像的技术已经取得了显著的进步&#xff0c;例如CLIP图像-文本编码器模型的发布&#xff1b;然而&#xff0c;当前的方法缺乏对生成图像风格的艺术控制。我们提出了一种方法&#xff0c;用于为给定的文本描述生成指定风格的绘图&…

Spring框架学习笔记(三):AOP编程

1 动态代理 1.1 通过案例理解动态代理 &#xff08;1&#xff09;需求说明&#xff1a; 1. 有 Vehicle接口(交通工具接口, 有一个 run 方法), 下面有两个实现类 Car 和 Ship 2. 当运行 Car 对象 的 run 方法和 Ship 对象的 run 方法时&#xff0c;输入如下内容, 注意观察前后…

HTML静态网页成品作业(HTML+CSS+JS)——在线购物商城网页设计制作(4个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;使用Javacsript代码实现图片轮播切换&#xff0c;共有4个页面。 二、…

手机图片恢复不求人:手动找回丢失的照片!

无论是外出旅行、聚会还是日常点滴&#xff0c;我们总是习惯用手机记录下来&#xff0c;让美好的瞬间定格在一张张照片中。然而&#xff0c;有时因为误删、清空缓存或是更换手机&#xff0c;那些珍贵的照片突然消失了。手机图片恢复有什么简单易行、容易上手的方法吗&#xff1…

容器组件:角标组件,纵向拖动组件(HarmonyOS学习第四课【4.2】)

Badge&#xff08;角标组件&#xff09; 可以附加在单个组件上用于信息标记的容器组件。 说明 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 支持单个子组件。 说明 子组件类型&#xff1a;系统组件…

Online RL + IL : Active Policy Improvement from Multiple Black-box Oracles

ICML 2023 paper code 紧接上一篇MAMBA&#xff0c;本文在同种问题设定下的在线模仿学习方法。 Intro 文章提出了一种新的模仿学习算法&#xff0c;名为 MAPS&#xff08;Max-aggregation Active Policy Selection&#xff09;和其变体 MAPS-SE&#xff08;Max-aggregation A…

SSL证书对于网络安全的重要作用

SSL证书是一种数字证书&#xff0c;它通过加密技术确保了客户端&#xff08;如浏览器&#xff09;与服务器之间的数据传输安全。当一个网站安装了SSL证书后&#xff0c;用户在浏览器地址栏中可以观察到HTTPS&#xff08;超文本传输安全协议&#xff09;前缀和挂锁图标&#xff…

点量云流分享:关于实时渲染云推流技术

提到云串流或者云推流很多人可能和游戏关联起来&#xff0c;其实这个技术的应用领域不仅仅是游戏&#xff0c;还有云上旅游、考古、智慧园区、智慧城市、虚拟仿真等等行业。其解决的问题是将一些大型的3D应用程序放在云端&#xff0c;程序在运行的时候也是在云端&#xff0c;这…