后端之路第一站——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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为什么公司偏爱高薪招新人,老员工的我怎么办?

目录 前言 性价比 薪酬体系 心理学 技术迭代 老员工的价值 总结 前言 在当下的互联网行业&#xff0c;人才流动性极高&#xff0c;不少公司面临着一个棘手的问题&#xff1a;为什么宁愿花高薪聘请一名应届生&#xff0c;也不愿意给予现有老员工加薪以留住他们&#xff1…

Git大文件无法直接push用git lfs track 上传大文件具体操作

Git 因为大文件push失败 回退到git add前用git lfs track单独添加大文件 以下work flow仅代表个人解决问题的办法&#xff0c;有优化流程的欢迎交流 回退到git add前 以下指令回退一个commit git reset --soft HEAD~1以下指令撤销所有git add操作&#xff0c;但不删除本地修…

数据结构与算法学习笔记三---栈和队列

目录 前言 一、栈 1.栈的表示和实现 1.栈的顺序存储表示和实现 1.C语言实现 2.C实现 2.栈的链式存储表示和实现 1.C语言实现 2.C实现 2.栈的应用 1.数制转换 二、队列 1.栈队列的表示和实现 1.顺序队列的表示和实现 2.链队列的表示和实现 2.循环队列 前言 这篇文…

乡村振兴与农村基础设施建设:加大投入力度,提升建设水平,完善农村基础设施网络,打造宜居宜业的美丽乡村

一、引言 乡村振兴战略是我国在新时代推进农业农村现代化的重大战略部署&#xff0c;其核心目标是实现乡村的全面振兴&#xff0c;促进农业强、农村美、农民富。农村基础设施建设作为乡村振兴的基石&#xff0c;其建设水平直接关系到乡村经济的持续健康发展、乡村环境的改善以…

微软宣布GPT-4o模型,可在 Azure OpenAI上使用

5月14日&#xff0c;微软在官网宣布&#xff0c;OpenAI最新发布的多模态模型GPT-4o&#xff0c;可以在 Azure OpenAI 云服务中使用。 据悉&#xff0c;GPT-4o支持跨文本、视频、音频多模态推理&#xff0c;例如&#xff0c;通过GPT-4o打造一个AI助手&#xff0c;用于辅导孩子解…

【ORACLE战报】2024.4月最新OCP考试喜报.

课程介绍 DBA数据库管理必备认证&#xff1a;ORACLE OCP 19C 教材下载 ORACLE OCP 19C 官方电子教材 ORACLE OCP 12C官方电子教材 题库下载 ORACLE 19C题库 &#xff08;083384题、082362题&#xff09;-2024答案修正版.rar 所有的收获都是默默耕耘的成果 2024.4月【最新考试成…

数据挖掘流程是怎样的?数据挖掘平台基本功能有哪些?

数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的数据中提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。 数据挖掘的流程是&#xff1a; 清晰地定义出业务问题&#xff0c;确定数据挖掘的目的。 数据准备: 数据准备包括&am…

精酿啤酒:品质与口感的完善结合

在啤酒的世界中&#xff0c;Fendi club啤酒以其卓着的品质和与众不同的口感赢得了广泛的赞誉。作为精酿啤酒的品牌&#xff0c;Fendi club啤酒始终坚持对品质的追求&#xff0c;为消费者带来超卓的口感体验。 Fendi club啤酒的品质源于对原料的严格挑选和加工。他们选用上好的…

文献速递:多模态深度学习在医疗中的应用--多模式深度学习实现的全癌症整合组织学-基因组学分析

Title 题目 Pan-cancer integrative histology-genomic analysis via multimodal deep learning 多模式深度学习实现的全癌症整合组织学-基因组学分析 01 文献速递介绍 癌症的定义包括肿瘤和组织微环境中标志性的组织病理学、基因组学和转录组学的异质性&#xff0c;这些异…

【数据分析面试】44.分析零售客户群体(Python 集合Set的用法)

题目 假设你是一家在线零售商的数据库管理员&#xff0c;需要分析两类客户的数据。一个集合 purchased_customers 包含在最近一次促销活动中购买了商品的客户ID&#xff0c;另一个集合 newsletter_subscribers 包含订阅了新闻通讯的客户ID。编写一个函数 analyze_customers&am…

C++类与对象基础探秘系列(三)

目录 再谈构造函数 构造函数体赋值 初始化列表 explicit关键字 static成员 概念 特性 友元 友元函数 友元类 内部类 概念 特性 匿名对象 再次理解类和对象 再谈构造函数 构造函数体赋值 在创建对象时&#xff0c;编译器会通过调用构造函数&#xff0c;给对象中的各个成员…

Echarts使用

介绍 ECharts 是一个强大的&#xff0c;基于 JavaScript 的开源数据可视化库&#xff0c;适用于创建多种类型的图表&#xff0c;满足广泛的业务需求。它由百度团队开发并维护&#xff0c;后来捐赠给了 Apache 软件基金会&#xff0c;并已在2021年从孵化项目毕业&#xff0c;成…

【刷题(2)】矩阵

一、矩阵问题基础 遍历: for i in range(len(matrix)): for j in range(len(matrix[0]): while 倒序遍历: for i in range(right,left,-1) 临时存储:temp w,h:len(matrix[0])-1 len(matrix)-1 left,right,top,bottom:0 len(matrix[0])-1 0 len(matrix)-1 索引: width = le…

2024最新互联网公司工作时长排行榜出炉!

“工作时长”&#xff0c;是选择公司的一个非常重要的参考指标。 我们在选择一个公司的时候&#xff0c;除了需要关注总收入package 以外&#xff0c;还需要考虑这家公司的加班时长是否人性化。 我们的工作时长是周工作小时数。法定工作时间是40小时(955)。大小周通常折算为周…

企业大模型如何成为自己数据的“百科全书”?

作者 | 郭炜 编辑 | Debra Chen 在当今的商业环境中&#xff0c;大数据的管理和应用已经成为企业决策和运营的核心组成部分。然而&#xff0c;随着数据量的爆炸性增长&#xff0c;如何有效利用这些数据成为了一个普遍的挑战。 本文将探讨大数据架构、大模型的集成&#xff0…

数据结构篇3—《龙门客“栈”》

文章目录 &#x1f6a9;前言1、栈的概念2、栈的实现框架3、栈的代码实现3.1、栈的初始化和销毁3.2、入栈\出栈\返回栈顶元素\元素个数\判空3.3、栈定义注意事项 4、栈的应用实例——《括号匹配问题》 &#x1f6a9;前言 前面记录了关于顺序表和链表的数据结构&#xff0c;这一篇…

容器安全在云原生的安全上有什么大作为

进入后云计算时代&#xff0c;云原生正在成为企业数字化转型的潮流和加速器。云原生安全相关的公司雨后春笋般建立起来&#xff0c;各个大云厂商也积极建立自己云原生的安全能力&#xff0c;保护云上客户的资产。 与之相对的&#xff0c;黑产组织为了牟利&#xff0c;也在不断…

低功耗设计

设计电路谁都会&#xff0c;但是设计低功耗电路&#xff0c;降低芯片功耗却是难题 - 哔哩哔哩 (bilibili.com) 一个产品的低功耗设计&#xff0c;并不仅仅只是采用一个低功耗的MCU就能解决的问题。产品的低功耗&#xff0c;不久取决于MCU的低功耗&#xff0c;也取决于低功耗的…

QT状态机4-使用并行状态来避免组合爆炸

#include "MainWindow.h" #include "ui_MainWindow.h"MainWindow::MainWindow(QWidget *parent):

别再找了!吐血整理ChatGPT 3.5/4.0新手使用手册

引领科技潮流的ChatGPT早已名声在外&#xff0c;如今获取ChatGPT已变得触手可及&#xff0c;但很多人还多次提问如何使用chatgpt&#xff0c;为了避免陷入误区&#xff0c;本文旨在为广大ChatGPT爱好者提供一份实用的指南。 因此&#xff0c;帮助大家更好地掌握其使用技巧&…