【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的用法不止这些,感兴趣的话,大家可以自行探索哦
以上就是本篇博客全部内容!

相关推荐
杨运交15 分钟前
[007][租户模块]基于 TransmittableThreadLocal 与 TaskDecorator 的租户上下文传递设计
后端
huzhongqiang20 分钟前
Python全站链接爬取工具优化:支持过滤和断点续爬
后端·爬虫
神奇小汤圆21 分钟前
SpringBoot 4 最被低估的新特性:Spring Data AOT
后端
杨运交22 分钟前
[004][缓存模块]Caffeine缓存自定义:构建灵活的Spring Boot缓存管理器
后端
刀法如飞26 分钟前
一款开箱即用的Flask 3.0 MVC工程脚手架,面向AI开发
后端·python·flask
神奇小汤圆42 分钟前
美团Java一面:布隆过滤器有什么缺点?
后端
Zfox_44 分钟前
【LangChain】核心组件(上)
后端·langchain·ai编程
vooy pktc1 小时前
Spring Security 官网文档学习
java·学习·spring
钰衡大师1 小时前
Activiti 7 工作流技术文档
java·数据库·spring boot