【SpringBoot】从学会使用maven开始


🎬 那我掉的头发算什么个人主页
🔥 个人专栏 : 《javaSE》《数据结构》《数据库》《javaEE》

⛺️待到苦尽甘来日


引言

当我们在创建一个新的idea项目时,不知道大家注意过没有


在这个页面中除了IntelliJ选项之外,还有一个Maven选项。而这个Maven恰好就是我们今天这篇文章的重头戏!

文章目录

创建Maven项目

单单创建一个Maven项目其实很简单,只需要在原有的基础上把本来创建的idea项目改成Maven就好了。此处的GroupId和ArtifactId在工作中参与大项目时会使用到,表示组名和项目的一些信息。

创建完成后的项目中的目录与我们之前idea的目录差异很大,有了很多没见过的模块,比如:

  • target:Maven构建项目后生成的输出目录,所有的编译、打包的结果都会在这里
  • pom.xml :Maven 项目的核心配置文件,定义了项目的依赖、构建方式、插件、版本等关键信息。
  • External Libraries 外部依赖:这里显示的是项目通过 Maven 引入的所有外部依赖库。

target目录下的内容其实可以全部删除,因为每一次刷新Maven这些东西就会通过Maven指令重新解析并且重新生成一遍,我们只需要其中有用的包就行。

当我们想要检查某一个依赖是否真的被加入到项目中,我们可以检查外部依赖,如果外部依赖里确实有,那就说明这个依赖被添加进去了。

pom.xml是Maven中一个非常重要的文件!

pom文件

这是一个简单的数据库依赖:

java 复制代码
<?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>maven-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>9.3.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>protobuf-java</artifactId>
                    <groupId>com.google.protobuf</groupId>
                </exclusion>
            </exclusions>
        </dependency>



    </dependencies>
</project>

项目基本信息

前面这一部分都是对于项目的一些简介,里面包含了项目的一些基本信息。

GAV

java 复制代码
<groupId>org.example</groupId>
<artifactId>maven-demo</artifactId>
<version>1.0-SNAPSHOT</version>

这三个标签合称为Maven 的 GAV 坐标,是全球唯一标识一个项目 / 依赖的 "身份证",无论在本地仓库还是中央仓库,Maven 都靠这三个值定位资源。

G:组织(团队名or公司名)

A:项目(项目名称)

V:版本

properties

java 复制代码
<properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

properties是全局属性配置区,可以在这里定义 "公共变量",作用是统一管理项目的基础配置,避免分散配置导致的不一致。

比如此处就定义了jdk的版本以及编码格式。

依赖管理核心:dependencies与dependency

java 复制代码
<dependencies>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>9.3.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>protobuf-java</artifactId>
                    <groupId>com.google.protobuf</groupId>
                </exclusion>
            </exclusions>
        </dependency>



    </dependencies>

这里我们也是通过其中的GAV坐标来定位依赖,比如此处使用的就是Mysql官方的JDBC驱动来进行数据的链接的一个依赖。Maven会自动的到官方地址去下载这个依赖到本地仓库。

Maven 有 "传递依赖" 机制:当你引入 A 依赖时,A 依赖本身依赖的 B、C 库也会被自动引入。

但有时候,传递依赖会带来问题(比如版本冲突、冗余依赖),这时候就需要exclusions排除不需要的传递依赖:

这里排除了com.google.protobuf:protobuf-java:说明mysql-connector-j:9.3.0本身依赖了protobuf-java,但你的项目不需要这个库(或者它和其他依赖版本冲突),所以通过exclusion强制排除。

Maven的配置与使用

生命周期

我们点击右边的图标就可以打开Maven操作界面了。

这一部分表示整个Maven的一个生命周期。不过我们平时只需要用到前五个就可以。

我们可以直接双击package代表执行除了clean前五个命令,最终会将项目打包成一个.jar包。

下载依赖到本地仓库

如图所示,我们刚开始尝试添加一个依赖的时候,肯定会出现上面这样的报红的情况。这是因为Maven检查了本地仓库之后发现不存在9.2.0这个版本的数据库依赖。此时我们可以点击刷新Maven ,让Maven下载依赖:

新建Maven仓库

我们的Maven在本地C盘中有一个默认仓库,一般是在C:\Maven.m2中。建议大家改到别的目录下,因为我们的依赖都会被下载到这里,久而久之会占用很大的存储空间。注意新建的Maven仓库要包含原仓库中的所有文件。

然后我们把这里的两个路径改成和我图中一样的路径即可。

此处的setting.xml中保存了Maven的一些基本设置等。正常来说Maven会到总仓库中下载依赖,但是这个服务器在国外,所以速度可能会有点慢,可以通过在settings.xml中配置国内镜像源把下载路径改到国内的云服务,下载速度会变快。
有需要的话可以私信我,我把我的setting.xml文件私发给你。

当然,Maven的用法不止这些,感兴趣的话,大家可以自行探索哦
以上就是本篇博客全部内容!

相关推荐
灰子学技术1 小时前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
风流倜傥唐伯虎2 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
Gogo8162 小时前
BigInt 与 Number 的爱恨情仇,为何大佬都劝你“能用 Number 就别用 BigInt”?
后端
fuquxiaoguang2 小时前
深入浅出:使用MDC构建SpringBoot全链路请求追踪系统
java·spring boot·后端·调用链分析
毕设源码_廖学姐3 小时前
计算机毕业设计springboot招聘系统网站 基于SpringBoot的在线人才对接平台 SpringBoot驱动的智能求职与招聘服务网
spring boot·后端·课程设计
顾北123 小时前
MCP服务端开发:图片搜索助力旅游计划
java·spring boot·dubbo
昀贝3 小时前
IDEA启动SpringBoot项目时报错:命令行过长
java·spring boot·intellij-idea
野犬寒鸦4 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
indexsunny4 小时前
互联网大厂Java面试实战:Spring Boot微服务在电商场景中的应用与挑战
java·spring boot·redis·微服务·kafka·spring security·电商
逍遥德5 小时前
如何学编程之01.理论篇.如何通过阅读代码来提高自己的编程能力?
前端·后端·程序人生·重构·软件构建·代码规范