Maven与Springboot创建

相信不少人接触学习数据库的途中,接触过JDBC

在学习这个JDBC的时候,最先关键的一环,就是引入一个MySQL的jar包。

那么引入jar的包过程,其实呢是比较麻烦的,特别是以后进行项目开发的时候,一个个的引入jar包,那是基本不太可能的,所以,为了解决这些"障碍",项目管理工具就应运而生了。

那么今天就来分享下,目前较为广泛使用的项目管理工具。

Maven

对于maven是什么?

这里提供一个官方解释:

Maven是Apache软件基金会下的一个开源项目,旨在为开发者提供一个全面的项目开发和管理框架。

maven使用一个标准的目录结构和一个Project Object Model(POM)来描述项目,通过插件来执行编译、测试打包等操作。

所以总的来说,maven的出现是为了让开发人员提高效率,减少bug的出现。

maven的特性是很丰富的

1.简单易用的项目设置:

  • 提供了一个标准化的项目结构,简化了新项目的创建过程
  • 使用了pom文件(通常指的是pom.xml),定义项目配置和依赖关系。

2.统一的构建系统

  • 提供了一组预定义的生命周期阶段 如(compile,test,package,install),使开发者只需调用简单的命令即可完成复杂的构建任务。
  • 支持跨平台使用,确保在不同操作系统上的行为一致

3.丰富的依赖管理

  • 自动下载并管理项目所需的库(依赖),减少了手动配置的工作量
  • 使用中央仓库或自定义仓库来存储和检索依赖项

4.多模块支持

  • 允许将项目划分为多个子模块,每个模块可以有自己的POM文件,同时也可以共享父项目的配置
  • 支持聚合构建,即可以一次性构建整个项目的所有模块

5.广泛的插件生态系统

  • 提供了大量的插件来扩展其功能,包括但不限于编译器插件、报告插件、SCM相关插件等
  • 开发者可以根据需要选择合适的插件,或者开发自己的插件来满足特定需求

6.项目信息管理

  • 可以生成站点文档,包含关于项目的信息,如依赖列表,单元测试覆盖率报告等

7.发布管理

  • 支持项目的发布流程,包括版本控制、发布准备、部署到远程仓库等

由于maven提供的功能和特性很多,所以这里就分享其他的了,小编这里使用更多的功能体现在

项目构建、管理依赖

ok,废话不多说,接下来介绍下如何创建个maven项目吧。

创建maven项目

这里以idea专业版举例

在idea中,点击File--->New--->project

或者

点击new project

进入这个页面后

信息中的name,其实可以随便写,或者你写的有意义点也是可以的

然后location你放到你觉得合适的位置就行,Build system选择maven即可,jdk你选择你电脑配置好的jdk版本

最后点击后面的create就行

进入这个页面,maven项目就当是创建好了。

那么也先别着急去看这个pom文件

接下来 还需要讲一些注意事项。

注意事项

首先点击setting

找到这里

这里可以看到maven的一些基础配置信息

我们看到这个local repository,默认是放在C盘:C:\Users\用户名\.m2

如若是想放在其他盘,那么可以在其他盘中创建个文件夹,然后将整个.m2进行移动

对于这个User setting file而言,maven使用的是idea自带settings文件,所以可以暂时不必去管理。

什么时候会需要呢?

比如当maven从中央仓库拉取依赖的时候,发现多次出现拉去失败,或者拉取缓慢,那么此时呢,就可以找到这个setttings文件,修改下镜像仓库地址,比如使用阿里云的仓库,加快下载。

当然我们可以发现在.m2文件夹中不一定存在这个settings文件,所以我们可以从以下文件路径找到

D:\(安装idea时候放置的目录)\IntelliJ IDEA 2024.1.6\plugins\maven\lib\maven3\conf

上面的maven配置信息中,只是对本项目进行设置的,如若想后续的项目都是使用你修改后的路径

那么可以在代码页面中,点击file->new projects etup

点击settings for new projects

进入该页面后,按照你对本项目是如何设置放置路径的,再放置一遍即可。

设置完这些后,接着来看看maven的一些基础使用

当然这个是指很基础的那种

首先我们点击右边的m

点击lifecycle(生命周期阶段),可以看到很多选项

这里看到会有很多命令,这里我们双击这些命令,就可以执行了,使得开发效率进一步提升。

当然,小编这里对这些命令解释下:

|----------|--------------|-------------------------------------|
| 阶段名 | maven命令 | 说明 |
| clean | mvn clean | 删除之前构建生成的target目录(清理工作目录) |
| validate | Mvn validate | 验证项目是否正确,pom是否完整,例如检查依赖是否存在 |
| compile | mvn compile | 编译项目的源码(src/main/java),生成.class文件 |
| test | mvn test | 使用JUnit或其他测试框架运行测试代码(src/test/java) |
| package | mvn package | 打包jar或war文件,放入target/目录 |
| verity | mvn verify | 运行集成测试,检查打包是否符合质量标准 |
| install | mvn install | 将打包好的包安装到本地maven仓库供本地项目引用 |
| site | mvn site | 生成项目信息网站,包括依赖关系、报告等(需要配置) |
| deploy | mvn deploy | 将构建好的包发布到远程仓库(比如Nexus,私服等),供其他人使用 |

当然我们如若在本机进行学习时候,还没进入工作的是,更多会是使用

clean、package、test等命令

同时这些命令是可以组合的,比如

mvn clean package

先清理,再编译、打包

mvn clean install

常用于构建多个项目模块,打完包后装入本地仓库

mvn test

单独运行测试代码

接下来演示下如何使用吧,以package、clean举例

没有点击package

点击package后

此时此刻,左边的项目结构中,多了个target目录,还多了个jar包

然后点击clean后,这个target就会消失

ok,这就是maven命令的简单使用

那么接下来使用简单使用下maven的pom.xml文件吧

简单使用POM.xml

举个例子,比如小编开头所说的引入MySQLjar包

那么使用pom.xml如何引入呢?

我将以下配置信息放到pom.xml中

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| XML <dependencies> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> </dependencies> |

有些时候,会显示爆红,但这也没关系。

接着就是最重要的一步,修改pom.xml后一定要进行刷新,此时maven会帮我们自动下载依赖

点击Maven下面的两个箭头的组成的圆圈,同时我们也得注意到左边是没有MySQL8.0的jar包的

此时此刻,我们就可以发现这个包就自动下载下来了。

那么为什么下载这个MySQL的jar包就会多出google的protobuf的jar包呢?

这就涉及到了

传递依赖

传递依赖简单来说呢,当你在pom.xml声明了一个依赖,maven不仅会下载这个依赖,还会自动解析并下载该依赖所依赖的其他所有库。

比如上面的,MySQLjar包中某些库依赖google的protobuf包,所以maven就下载了相关的包。

那么有些时候,我们下载jar多了,可能会有引起依赖冲突,所以我们需要解决这个依赖冲突

但是呢,手动去一个个寻找,一个个写排除依赖语句,我们会发现这是比较慢的,也费点精力,所以此时呢,可以借助一个插件

来进行依赖管理

插件:

下载重启idea后

点击下面的dependency analyze,再点击all Dependencies as tree/list,都可以看到pom.xml引入的依赖

假设此时,要去除掉protobuf依赖,此时右键整个protobuf-Java,选中exclude

(注意修改pom.xml的时候)刷新完maven,最好把这个插件的Refresh UI点击一下

pom.xml文件中,就出现了除去信息,然后更新下pom.xml

最后我们就看到了左边是少了protobuf的jar包。

那么还有个问题,此时如若我想真的彻底删除某个依赖呢?

此时可以这样做:

找到对应的仓库目录先

点击repository

比如我想删除这个mysql,那么此时呢,

按照com.mysql......这样的方式在repository仓库中进行寻找,找到后删除就行

值得注意的是,repository对应的目录下如若有对应的包目录,那也要进行删除。

回过头来,对于刚刚的dependency代码这里呢

这里做出一些简单解释

<dependencies>:

这个是一个容器标签,用于包裹多个依赖项(即多个<dependency>元素)

它表示当前项目的所有外部依赖集合

<dependence>必须要放在容器标签内。

<dependencies>:

它是一个具体的依赖项,表示项目需要的某个外部库和模块

它具有以下的子元素:

<groupId>:定义该依赖所属的组织或项目的唯一标识符

<artifactId>:定义该依赖的具体模块或组件名称

<version>:定义该依赖的具体版本号

通过这以上的三个子元素可以确定唯一的一个外部库在哪了。

<scope>:定义依赖作用范围(如compile、test、runtime>

<optional>:定义该依赖是否为可选依赖

<exclusions>:排除某些传递性依赖

依赖寻找

那么还有一个问题?就是pom.xml文件中的依赖从哪下载呢?

下载顺序:

先从本地仓库寻找,有,就直接返回资源

如若没有呢?那就从中央仓库进行请求,请求成功后,就会保存到本地仓库,

后续继续下载该依赖的时候,就不必再从中央仓库去寻找了。

中央仓库地址如下:

https://repo1.maven.org/maven2/

那么这个中央仓库是全球唯一的,maven构建的项目,默认使用此地址。

当然这个页面是要自己一点点找的,所以有时候相对比较麻烦,页面 也不是很好看。

所以这里介绍一个第三方的依赖搜索网站:

https://mvnrepository.com/

这个网站有着友好的web页面,可以进行关键词搜索,分类依赖筛选

接下来看看我是如何找到刚刚dependency代码的吧

点击搜索

最上两个,第一个代表最新版,第二个代表的是经典版,选择哪个都行

小编这里选择第二个

然后,小编这里选择,8.0的版本,注意大版本要和本地的安装的MySQL要一致

往下滑,就看到maven这里了,此时就可以复制粘贴了。

那么到这里,maven的项目的构建就分享到这里。

接下来分享下,如何创建一个springboot项目

创建Springboot项目

这里以idea2024.1.6专业版为例

这里提供两种方创建

一:通过idea自身创建

1.点击new project

2.点击左边的spring boot

3.看到此页面

这里的name目前可以随便填,location中,找好位置,存放即可

type类型中,选择maven

group和artifact中,想填成自己的也行,或者使用默认的也行

jdk选择自己系统环境变量已经配置好的

packaging中下,选择jar包即可

4.点击next即可

这个页面中,点击左边的web,选择spring web

5.点击create

值得注意的是,如果是第一次创建,这个创建过程会有点慢,因为需要进行依赖包的下载,所以稍等即可

此时呢,看到像这样,就算是创建完毕了

二:通过网站创建

https://start.spring.io/

1.进入该网站

左边的页面内容,按照刚刚idea创建那样,填好就行

2.点击右边的add dependence

点击spring web

3.最后点击下面的create,等待下载

4.找到该压缩包,解压缩你想存放的位置

然后右键该文件夹通过idea打开即可

ok,小编就暂且分享到这里

相关推荐
魔道不误砍柴功16 分钟前
《理解 Java 泛型中的通配符:extends 与 super 的使用场景》
java·windows·python
Joseit24 分钟前
基于 Spring Boot实现的图书管理系统
java·spring boot·后端
{⌐■_■}43 分钟前
【go】什么是Go语言的GPM模型?工作流程?为什么Go语言中的GMP模型需要有P?
java·开发语言·后端·golang
zizisuo1 小时前
JAVA:Web安全防御
java·web
hnsqls1 小时前
删除不了jar包-maven clean package失败
maven·jar
秋野酱1 小时前
基于javaweb的SSM+Maven小区失物招领系统设计与实现(源码+文档+部署讲解)
java·maven
程序猿chen1 小时前
JVM考古现场(二十四):逆熵者·时间晶体的永恒之战
java·jvm·git·后端·程序人生·java-ee·改行学it
AronTing1 小时前
单例模式:确保唯一实例的设计模式
java·javascript·后端
AronTing2 小时前
模板方法模式:定义算法骨架的设计模式
java·后端·面试